'-> Mattonite by Stefano Maria Regattin
'i> 2 ottobre 1996 
'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
'm> 9 novembre 1996
'm> 12 novembre 1997 
'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 
'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 
'm> 16,17,18,19,23,24 luglio 2000
'm> 5,12,13,14,15,30 agosto 2000 
'm> 1,10,11,26 settembre 2000
'm> 12,15,24,25,26,31 ottobre 2000 
'm> 2,16,17,21,23 novembre 2000
'm> 3 dicembre 2000
'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 
'm> 1 marzo 2001 
'm> 15,22,23,26 aprile 2001
'm> 19,20,22,26,27,29 maggio 2001
'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001
'm> 1,2,3,6,7,10,14,15,16,29,30 luglio 2001
'm> 7,8,9,14,29 agosto 2001
'm> 9,17 settembre 2001
'm> 4,5,6,7,11,12,13,15 ottobre 2001 
'm> 2,3,4,5,6,8,22,25,26 novembre 2001 
'm> 3,9,17,18,28,30 dicembre 2001
'm> 6,27,28 gennaio 2002 
'm> 13 febbraio 2002 
'm> 1,2,8,12 giugno 2002 
'm> 31 luglio 2002 
'm> 1,6,9,12,16,17,18,26,27 agosto 2002
'm> 11,12 settembre 2002 
'm> 28,29 ottobre 2002 
'm> 23,25 gennaio 2003 
'm> 4,7,11,12,13,23,28 febbraio 2003 
'm> 15,18,30,31 marzo 2003 
'm> 28 aprile 2003 
'm> 15,16,26 maggio 2003 
'm> 2,8,11 giugno 2003 
'm> 2 luglio 2003
'm> 21,22 agosto 2003
'm> 13,14,25 ottobre 2003
'm> 14 gennaio 2004
'm> 19 maggio 2004 
'm> 12,13 giugno 2004
'--------------------- 
Set Buffer 25
'allocates 25 kiloBytes for variables space
Degree 
'activates the degree angle misuration settings for trigonometric functions
' like Sin() and Cos() 
OGGETTISTANDARD$="MattoniteStandardObjects.Abk"
'standard graphics objects 
OGGETTICOLORATI$="MattoniteColouredObjects.Abk"
'coloured graphics objects 
EFFETTISONORI$="MattoniteSoundFXs.Abk"
'sounds
M0DULOMEDUNO$="MattoniteMusic.MED"
'first OctaMED module  
M0DULOMEDDUE$="MusicPath.MED"
'second OctaMED module 
PUNTEGGI$="TopHundredScores"
'top hundred scores
VERO=-1
'true
FALSO=0
'false 
'these are set not for commodity but for strange running of the executable 
' derivated from this source if you replace the VERO (that means True in 
' italian) and FALSO (that means False in italian) with the original True and
' False constants
ACAPO$=Chr$(10)
'new line char 
ALTEZZAFONT=8
'font height 
BANCOTEMPORANEO=65535
'temporary bank
BANCODELLIVELLO=65534
'level bank
BANCODELMOTIVODIFONDO=65533
'background motive bank
BANCODELMODULOMED=1023
'OctaMED module music bank 
DURATADELMOTIVODIFONDO=0
'background motive duration, that is fifty fiftythes (one second) for 14 secs
IMMAGINIBOING=8
'boing images
IMMAGINIBOINGMORTALE=26
'killer boing images 
IMMAGINIESPLOSIONEMATTONCINO=13
'brick explosion images
IMMAGINIGUANO=1
'guano images
IMMAGININEMICOUNO=36
'enemy one images
IMMAGINIPAPERO=4
'duck images 
IMMAGINIPROIETTILENEMICIUNO=1
'enemies one bullet images 
IMMAGINIRUBAPALLINA=11
'ballthief images
LARGHEZZAPANNELLO=48
'panel width 
MASSIMOBOINGINCAMPO=3
'boing maximum 
MASSIMOCOMPORTAMENTIDEINEMICI=1
'enemy behavioures maximum 
MASSIMOMATTONCINIDARIDISEGNARE=247
'brick to redraw maximum 
MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
'bonus bricks maximum
MASSIMONEMICIUNOINCAMPO=5
'enemies one maximum 
MASSIMOPALLINEINCAMPO=5
'balls maximum 
MASSIMOPROIETTILIINCAMPO=MASSSIMONEMICIUNOINCAMPO
MATTONCINIDIPOTENZIAMENTOCOLORATI=0
'flag that reports 1 if you want the coloured objects or 0 if you want the 
' standard ones
MOSTRASOLOILPUNTEGGIOMASSIMO=1
'flag that report 1 if you want the top score displayed or 0 if only the 
' higher coming
MOTIVODIFONDOCARICATO=0
'background motive loaded flag 
OGGETTORIGA=0
'row object
OGGETTOCENTRODELLABARRA=1
'bar centre object 
OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
'bar sides object
OGGETTOLASER=OGGETTOLATIDELLABARRA+1
'laser beam object 
OGGETTORAGGIOLASER=OGGETTOLASER+1
'laser ray object
OGGETTOMATTONCINODIPOTENZIAMENTO=OGGETTORAGGIOLASER+1
'first bonus bricks object 
OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
'first boing object
OGGETTONEMICOUNO=OGGETTOBOING+MASSIMOBOINGINCAMPO
'first enemy one object
OGGETTOPROIETTILENEMICOUNO=OGGETTONEMICOUNO+MASSIMONEMICIUNOINCAMPO
'first enemies one bullet
OGGETTOPAPERO=251
'duck object 
OGGETTOGUANO=252
'guano object
OGGETTOPAPEROALIENO=253
'alien duck object 
OGGETTORUBAPALLINA=254
'ballthief object
OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
'first ball object 
PRIMAPARTITA=VERO
'this flag is true if you are playing your first game
RITARDODELLENTRATAINCAMPODEIBOING=-1000
'boing in game appearition delay 
RITARDODELLENTRATAINCAMPODEINEMICI=-3000
'enemies in game appearition delay 
SEMITONO#=1.05946
'distance between two semitones multiply factor
VOCE=1
'voice 
Dim NOMEDELGIOCATORE$(99),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(99)
'players name, level up to the players have played 
Dim PUNTEGGIODELGIOCATORE$(99)
'player score
Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
'ball X movement 
Dim DELTAXPROIETTILENEMICOUNO#(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet X movement 
Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
'ball Y movement 
Dim DELTAYPROIETTILENEMICOUNO#(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet Y movement 
Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
'ball velocity 
Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
'X and Y balls coords on screen
Dim BOING(MASSIMOBOINGINCAMPO-1),BOINGMORTALE(MASSIMOBOINGINCAMPO-1)
'boings, killer boing marker 
Dim C0LORE(31),DURATADELLARIGA(2)
'colors that can be changed, row in game duration
Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
'redrawing brick process duration
Dim ESPLOSIONEMATTONCINO(246),IMMAGINEBOING(IMMAGINIBOING-1)
'brick explosion, boing image
Dim IMMAGINEBOINGMORTALE(IMMAGINIBOINGMORTALE)
'killer boing image  
Dim IMMAGINEESPLOSIONEMATTONCINO(IMMAGINIESPLOSIONEMATTONCINO)
'brick explosion image 
Dim IMMAGINENEMICOUNO(IMMAGININEMICOUNO-1)
'enemy one image 
Dim IMMAGINEPAPERO(IMMAGINIPAPERO-1),IMMAGINEPAPEROALIENO(IMMAGINIPAPERO-1)
'duck image, alien duck image
Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2)
'ballthief image, bar side width 
Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
'ball glued to the bar 
Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
'ball has hitted the bar 
Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
'ball has hitted one bar side
Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
'brick, brick to be redrawed 
Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
'bonus brick 
Dim NEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one 
Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
'ball
Dim PROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet  
Dim ROTAZIONEBOING(MASSIMOBOINGINCAMPO-1)
'boing rotation direction
Dim ROTAZIONENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one rotation direction
Dim X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1),XCOLLA(MASSIMOPALLINEINCAMPO-1)
'brick X coord, boing X coord, glued ball X coord
Dim XDIPARTENZANEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemies one start X 
Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
'X bonus brick coord 
Dim XNEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one X coord,
Dim XPROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1),Y0ZONA(246)
'enemy one bullet X coord, brick Y coord 
Dim YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
'boing Y coord, glued ball Y coord 
Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
'Y bonus brick coord 
Dim YNEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one Y coord 
Dim YPROIETTILENEMICOUNO(MASSIMONEMICIUNOINCAMPO-1)
'enemy one bullet Y coord  
Global VERO,FALSO
'True. False 
Global ACAPO$,CENTOGIOCATORI$,EFFETTISONORI$,OGGETTI$,M0DULOMEDUNO$
'one hundred players, soundFXs, objects, med module one
Global M0DULOMEDDUE$,OGGETTICOLORATI$,OGGETTISTANDARD$,PERCORSO$
'med module two, coloured objects, standard objects, main path 
Global PERCORSODEILIVELLI$,PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$
'levels path ,graphics path, music path
Global PUNTEGGI$
'scores path 
Global SEMITONO#
'semitone multiply/divide factor 
Global ALTEZZAFONT,BANCODELLIVELLO,BANCODELMODULOMED,BANCODELMOTIVODIFONDO
'font height, level bank, med module bank, background motive bank  
Global BANCOTEMPORANEO,_BARRE,COMPORTAMENTODEINEMICI
'temporary bank, bars, enemy behaviour 
Global DISTANZADELMATTONCINOPIUVICINOALPAPERO,_BARRABLOCCATA,BOINGINCAMPO
'nearest to duck brick distance, locked bar, in game boings
Global BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO,DURATADELLARIGA
'bonus, glue, screen colours minus one, row time duration
Global DURATADELMOTIVODIFONDO,EFFETTISONORICARICATI,FONTEDICARATTERI
'background motive duration, sound FXs loaded, selected chars font number
Global GRADIPAPEROALIENO,GUANOINCAMPO,GUANOMOLLATO,IMMAGINEGUANO,IMMAGINELASER
'alien duck degrees ,guano activated, guano dropped, guano image,
' laser beam image 
Global IMMAGINEPALLINA,IMMAGINEPAPERO,IMMAGINEPAPEROALIENO,IMMAGINERAGGIOLASER
'ball image, duck image, alien duck image, laser ray image 
Global IMMAGINERUBAPALLINA,IMMAGINEPROIETTILENEMICIUNO,IMMAGINIBOING
'ballthief image, enemies one bullet image, boing images 
Global IMMAGINIBOINGMORTALE,IMMAGINIESPLOSIONEMATTONCINO,IMMAGINIGUANO
'killer boing images, brick explosion images,guano images  
Global IMMAGININEMICOUNO,IMMAGINIPAPERO,IMMAGINIPROIETTILENEMICIUNO
'enemy one images ,duck images, enemy one bullet images
Global IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA
'row type two images, row type three image, row type one image 
' ballthief images 
Global LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
'panel width, laser, level, bar width
Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
'changed bar width, in game boings maximum   
Global MASSIMOCOMPORTAMENTIDEINEMICI,MASSIMOMATTONCINIDARIDISEGNARE
'enemies behavioures maximum, bricks to be redrawed maximum  
Global MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO,MASSIMONEMICIUNOINCAMPO
'in game bonus brick maximum, in game enemies one maximum
Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
'in game balls maximum, in game bricks, bonus bricks number
Global MATTONCINIDIPOTENZIAMENTOCOLORATI,MATTONCINIRIMASTI
'coloured bonus bricks, bricks left
Global MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO,M0DULOMEDCARICATO
'brick to find for the duck, brick for the duck, med module loaded 
Global MOSTRASOLOILPUNTEGGIOMASSIMO,MOTIVODIFONDOCARICATO,OGGETTOBOING
'show only the top score, background motive loaded, first boing object 
Global OGGETTOCENTRODELLABARRA,OGGCETTOGUANO,OGGETTOLASER,OGGETTOLATIDELLABARRA
'bar centre object, guano object, laser beam object, sides of the bar object 
Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTONEMICOUNO,OGGETTOPALLINA
'first bonus brick object, first enemy one object, first ball object 
Global OGGETTOPAPERO,OGGETTOPAPEROALIENO,OGGETTOPROIETTILENEMICOUNO
'duck object, alien duck object, first enemy one bullet object 
Global OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA
'laser ray object, row object, ballthief object
Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA
'ball taken by the ballthief, ball choosen by the ball thief, balls left 
Global PALLINEINCAMPO,_PAPEROALIENO,_PAPEROALIENOINCAMPO,_PAPEROINCAMPO
'in game balls counter, alien duck status, in game alien duck, in game duck
Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
'score position, score, maximum score, reflected laser ray 
Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
'laser ray fired, row status, balls bounce against bricks status, boing delay
Global RITARDOPAPERO,RITARDODELGIOCO
'duck delay, game delay  
Global RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA
'ball taken sound repeat delay 
Global RITARDODELLENTRATAINCAMPODEIBOING
'in game boing appearition time delay
Global RITARDODELLENTRATAINCAMPODELPAPEROALIENO
'in game alien duck appearition time delay 
Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA
'in game ballthief appearition time delay
Global RITARDODELLENTRATAINCAMPODEINEMICI,RITARDODEINEMICIUNO
'in game enemies appearition time delay, in game enemies one delay 
Global RUBAPALLINACOLPITO,TASTO,TASTOGRIGIO,TASTOSCANSITO
'ballthief hitted, key, grey key, scanned key
Global TEMP0TRASCORSODIGIOCO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA,XGUANO,XLASER
'game time spent, remove the row, voice, bar X coord, row ending X, guano X
' coord, laser beam X coord  
Global XPANNELLO,XPAPERO,XPAPEROALIENO,XRIGA,XRUBAPALLINA,YBARRA,YGUANO,YLASER
'panel X coord, duck X coord, alien duck X coord, row X coord, ballthief X 
' coord, bar Y coord, guano Y coord, laser beam Y coord
Global YPAPERO,YPAPEROALIENO,YRUBAPALLINA
'duck Y coord, alien duck Y coord, ballthief Y coord 
Global NOMEDELGIOCATORE$(),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$()
'player name,player latest level 
Global PUNTEGGIODELGIOCATORE$()
'player score
Global DELTAXPALLINA#(),DELTAXPROIETTILENEMICOUNO#(),DELTAYPALLINA#()
'ball X movement, enemy one bullet X movement, ball Y movement 
Global DELTAYPROIETTILENEMICOUNO#(),VELOCITADELLAPALLINA#(),XPALLINA#()
'enemy one bullet Y movement, ball velocity, ball X coord  
Global YPALLINA#()
'ball Y coord
Global BOING(),BOINGMORTALE(),C0LORE(),DURATADELLARIGA()
'boing status, killer boing status, color, row time duration 
Global DURATADELRIDISEGNODELMATTONCINO(),ESPLOSIONEMATTONCINO()
'brick redrawing time duration, brick explosion
Global IMMAGINEBOING(),IMMAGINEBOINGMORTALE(),IMMAGINEESPLOSIONEMATTONCINO()
'boing image, killer boing image, brick explosion image
Global IMMAGINENEMICOUNO(),IMMAGINEPAPERO(),IMMAGINEPAPEROALIENO()
'enemy one image, duck image, alien duck image 
Global IMMAGINERUBAPALLINA(),INGOMBRODELLABARRA()
'ballthief image ,bar side width 
Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
'ball glued to the bar, ball has hitted the bar
Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO()
'ball has hitted a bar side, brick 
Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),NEMICOUNO()
'brick to be redrawn, bonus brick, enemy one 
Global PALLINA(),PROIETTILENEMICOUNO(),ROTAZIONEBOING(),ROTAZIONENEMICOUNO()
'ball, enemy one bullet, enemy one rotation, boing rotation
Global X0ZONA(),XBOING(),XCOLLA()
'brick X coord, boing X coord, ball glued X coord  
Global XDIPARTENZANEMICOUNO(),XMATTONCINODIPOTENZIAMENTO(),XNEMICOUNO()
'enemy one start X, bonus brick X coord, enemy one X coord 
Global XPROIETTILENEMICOUNO(),Y0ZONA(),YBOING(),YCOLLA()
'enemy one bullet X coord, brick Y coord, boing Y coord, ball glued Y coord
Global YMATTONCINODIPOTENZIAMENTO(),YNEMICOUNO(),YPROIETTILENEMICOUNO()
'bonus brick Y coord, enemy one Y coord, enemy one bullet Y coord
Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
Proc IMPOSTAIPERCORSIDEIFILE
Proc IMPOSTALOSCHERMO
If MATTONCINIDIPOTENZIAMENTOCOLORATI=1
 OGGETTI$=OGGETTICOLORATI$
Else 
 OGGETTI$=OGGETTISTANDARD$
End If 
Proc CARICAGLIOGGETTI
Proc IMPOSTAGLIOGGETTI
Proc IMPOSTAICOLORI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Proc TROVAILFONTDATA70
Proc DISSOLVENZADEICOLORI[$FFF,1,1]
Hide 
Proc IMPOSTALARCOBALENO
Proc CARICAILLIVELLO
Proc DABANCOAVARIABILI
Proc METTIILPANNELLO
Proc CREALEIMMAGINIPERLERIGHE
Proc IMPOSTALEZONEDEIMATTONCINI
Proc METTIECONTAIMATTONCINI
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
Screen Swap 
Proc DISSOLVENZADEICOLORI[$FFF,1,2]
Proc IMPOSTALINGOMBRODELLABARRA
Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
Proc IMPOSTALADURATADELLERIGHE
Proc IMPOSTAILAMPEGGI
TESTOINTRODUTTIVO$="Press the M key if you want..."+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"...to listen to the music only,"+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"or press the S key if you want..."+ACAPO$
TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"...to listen to the sound fxs only."
Repeat 
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,22,1,500]
Until TASTO=Asc("M") or TASTO=Asc("m") or TASTO=Asc("S") or TASTO=Asc("s")
If TASTO=Asc("M") or TASTO=Asc("m")
 Proc CARICAUNMODULOMED
 If M0DULOMEDCARICATO=VERO
  Proc SUONAILMODULOMED
  EFFETTISONORICARICATI=0
 Else 
  Proc CARICAGLIEFFETTISONORI
 End If 
End If 
If TASTO=Asc("S") or TASTO=Asc("s")
 Proc CARICAGLIEFFETTISONORI
End If 
Repeat 
 Proc MOSTRAICREDITI
 Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
 Proc MOSTRALEOPZIONIDIGIOCO
 TESTOINTRODUTTIVO$="Press left mouse button to play."+ACAPO$
 TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
 If TASTO=-1
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  _BARRE=5
  C0LLA=FALSO
  DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  DURATADELLARIGA=-1
  INIZIODELLIVELLO=VERO
  LASER=0
  LIVELLO=0
  LUNGHEZZADELLABARRA=1
  LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
  PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  PALLINEINCAMPO=1
  _PAPEROINCAMPO=FALSO
  PUNTEGGIO=0
  RIGA=0
  RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  TEMP0TRASCORSODIGIOCO=0
  XBARRA=X Screen(X Mouse)
  YBARRA=247
  If PRIMAPARTITA=FALSO or LIVELLO>0
   Proc CANCELLAIMATTONCINI
   Proc CARICAILLIVELLO
   Proc DABANCOAVARIABILI
   Proc METTIECONTAIMATTONCINI
   If M0DULOMEDCARICATO=VERO
    Proc CARICAUNMODULOMED
    Proc SUONAILMODULOMED
   End If 
  Else 
   PRIMAPARTITA=FALSO
  End If 
  Repeat 
   Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
   Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
   Proc AGGIORNAILPANNELLO
   RITARDOMASSIMODELLABARRA=0
   If INIZIODELLIVELLO=VERO
    TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+ACAPO$
    TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
    Proc IMPOSTAIBOING
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,1 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 20
    End If 
    INIZIODELLIVELLO=FALSO
   End If 
   For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
    If PALLINA<PALLINEINCAMPO
     PALLINA(PALLINA)=VERO
     XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
     YPALLINA#(PALLINA)=YBARRA-4
    Else 
     PALLINA(PALLINA)=FALSO
     Proc CANCELLALAPALLINA[PALLINA]
    End If 
   Next PALLINA
   Autoback 1
   Timer=DURATADELMOTIVODIFONDO+50*15
   Repeat 
    TASTOCLICCATODELTOPO=Mouse Click
    If RITARDODELLABARRA=0 or RITARDOMASSIMODELLABARRA=0
     XBARRA=X Screen(X Mouse)
    End If 
    If RITARDOMASSIMODELLABARRA>0
     Add RITARDODELLABARRA,1,0 To RITARDOMASSIMODELLABARRA
    End If 
    Proc MOSTRALABARRA
    Proc CAMBIALALUNGHEZZADELLABARRA
    Proc LIMITAIMOVIMENTIDELLABARRA
    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
     If PALLINA(PALLINA)=VERO
      XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
      YPALLINA#(PALLINA)=YBARRA-4
      Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
     End If 
    Next PALLINA
    Proc MOSTRAILLASER
    If T0GLILARIGA>0
     If XRIGA>0
      Dec XRIGA
     End If 
     Proc MOSTRALARIGA[T0GLILARIGA]
    Else 
     If RIGA>0
      If XRIGA<XFINALERIGA
       Inc XRIGA
       Proc MOSTRALARIGA[RIGA]
      End If 
     End If 
    End If 
    Proc MATTONCINIDIPOTENZIAMENTO[0,0]
    Proc BOINGINCAMPO
    If _PAPEROINCAMPO=VERO
     Proc _PAPEROINCAMPO
    End If 
    If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
     Proc _PAPEROALIENOINCAMPO
     Proc MOLLAILGUANO
    Else 
     Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
    End If 
    If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
     ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
    End If 
    If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
     If ENTRATAINCAMPODELRUBAPALLINA=VERO
      Proc RUBAPALLINAINCAMPO
     End If 
    Else 
     Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
    End If 
    If RITARDODELLENTRATAINCAMPODEINEMICI=0
     If LASER>0
      Proc NEMICIINCAMPO
     Else 
      Proc CANCELLAINEMICIUNO : RITARDODELLENTRATAINCAMPODEINEMICI=-3000
     End If 
    Else If RITARDODELLENTRATAINCAMPODEINEMICI<0
     If RITARDODELLENTRATAINCAMPODEINEMICI=-1
      Proc IMPOSTAINEMICIUNO
     End If 
     Inc RITARDODELLENTRATAINCAMPODEINEMICI
    End If 
    If COMPORTAMENTODEINEMICI=0
     If RITARDODELLENTRATAINCAMPODEINEMICI=0
      Proc ILNEMICOUNOHASPARATO[0]
     Else 
      If PROIETTILENEMICOUNO(0)>0
       Proc ILNEMICOUNOHASPARATO[0]
      End If 
     End If 
    End If 
    Bob Update 
    TASTOPREMUTO$=Lower$(Inkey$)
    TASTOGRIGIO=Key Shift
    TASTOSCANSITO=Scancode
    Exit If TASTOPREMUTO$=Chr$(27)
    If TASTOPREMUTO$="p"
     Proc METTIILGIOCOINPAUSA
    End If 
    If TASTOGRIGIO=4
     If TASTOSCANSITO=80 : Rem F1 key 
      Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
     Else If TASTOSCANSITO=81 : Rem F2 key 
      Add PALLINEINCAMPO,1,1 To MASSIMOPALLINEINCAMPO
      For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
       If PALLINA<PALLINEINCAMPO
        PALLINA(PALLINA)=VERO
       Else 
        PALLINA(PALLINA)=FALSO
        Proc CANCELLALAPALLINA[PALLINA]
       End If 
      Next PALLINA
     Else If TASTOSCANSITO=82 : Rem F3 key 
      If LASER=-1
       LASER=1
      Else If LASER=1
       LASER=2
      Else If LASER=2
       LASER=3
      Else If LASER=3
       LASER=0
      End If 
     Else If TASTOSCANSITO=83 : Rem F4 key 
      If RIGA>0 and T0GLILARIGA=0
       T0GLILARIGA=RIGA
      End If 
      Add RIGA,1,0 To 3
     Else If TASTOSCANSITO=84 : Rem F5 Key 
      RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
      ENTRATAINCAMPODELRUBAPALLINA=VERO
     Else If TASTOSCANSITO=85 : Rem F6 Key 
      RITARDODELLENTRATAINCAMPODEINEMICI=-1
     Else If TASTOPREMUTO$=" "
      Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(28)-1,0]
     End If 
    End If 
    If MOTIVODIFONDOCARICATO=1
     If Timer-DURATADELMOTIVODIFONDO>50*15
      Proc SUONAILMOTIVODIFONDO : DURATADELMOTIVODIFONDO=Timer
     End If 
    End If 
   Until TASTOCLICCATODELTOPO>0
   Proc IMPOSTALEPALLINE
   DURATADELGIOCO=0
   Repeat 
    TASTOCLICCATODELTOPO=Mouse Click
    If TASTOCLICCATODELTOPO=1
     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
      LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
     Next PALLINA
    Else If TASTOCLICCATODELTOPO=2
     Proc HAISPARATOILRAGGIOLASER
    End If 
    If _BARRABLOCCATA>0
     If _BARRABLOCCATA=1
      X Mouse=X Hard(Int(XBARRA))
     End If 
     Dec _BARRABLOCCATA
    Else 
     If RITARDODELLABARRA=0 or RITARDOMASSIMODELLABARRA=0
      XBARRA=X Screen(X Mouse)
     End If 
     If RITARDOMASSIMODELLABARRA>0
      Add RITARDODELLABARRA,1,0 To RITARDOMASSIMODELLABARRA
     End If 
    End If 
    Proc MOSTRALABARRA
    Proc CAMBIALALUNGHEZZADELLABARRA
    Proc LIMITAIMOVIMENTIDELLABARRA
    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
     If PALLINA(PALLINA)=VERO
      If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
       XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
       YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
      Else 
       XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
       YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
       If TILTPALLINA=VERO
        XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
        YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
       End If 
       If XPALLINA#(PALLINA)>XPANNELLO-4
        XPALLINA#(PALLINA)=XPANNELLO-4
        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
        If EFFETTISONORICARICATI=2
         Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
        Else If EFFETTISONORICARICATI=1
         Boom 
        End If 
       Else If XPALLINA#(PALLINA)<3
        XPALLINA#(PALLINA)=3
        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
        If EFFETTISONORICARICATI=2
         Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
        Else If EFFETTISONORICARICATI=1
         Boom 
        End If 
       Else If YPALLINA#(PALLINA)<3
        YPALLINA#(PALLINA)=3
        DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
        If EFFETTISONORICARICATI=2
         Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
        Else If EFFETTISONORICARICATI=1
         Boom 
        End If 
       End If 
       If TILTPALLINA=VERO
        Add XTILTPALLINA,-Sgn(XTILTPALLINA)
        If XTILTPALLINA>0
         XTILTPALLINA=Max(XTILTPALLINA,0)
        Else If XTILTPALLINA<0
         XTILTPALLINA=Min(XTILTPALLINA,0)
        End If 
        Add YTILTPALLINA,-Sgn(YTILTPALLINA)
        If YTILTPALLINA>0
         YTILTPALLINA=Max(YTILTPALLINA,0)
        Else If YTILTPALLINA<0
         YTILTPALLINA=Min(YTILTPALLINA,0)
        End If 
        Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
        If XTILTPALLINA=0 and YTILTPALLINA=0
         TILTPALLINA=FALSO
        End If 
       Else 
        If TASTOPREMUTO$=" "
         XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
        End If 
       End If 
      End If 
      Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
      If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
       Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
       Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
       Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
       Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
      End If 
     End If 
    Next PALLINA
    Exit If TASTOPREMUTO$=Chr$(27)
    TASTOPREMUTO$=Lower$(Inkey$)
    Exit If TASTOPREMUTO$=Chr$(27)
    If TASTOPREMUTO$="p"
     Proc METTIILGIOCOINPAUSA
    End If 
    Proc MOSTRAILLASER
    Proc MOSTRAILRAGGIOLASER
    TASTOGRIGIO=Key Shift
    SHIFTSINISTRO=Btst(0,TASTOGRIGIO)
    SHIFTDESTRO=Btst(1,TASTOGRIGIO)
    TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO)
    TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE
    If TASTISHIFTPREMUTI=FALSO
     Proc MATTONCINOCOLPITODALRAGGIOLASER
    End If 
    Proc LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
    If T0GLILARIGA>0
     If XRIGA>0
      Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
     Else 
      Proc T0GLILARIGA : DURATADELLARIGA=-1
     End If 
    Else 
     If RIGA>0
      If XRIGA<XFINALERIGA
       Inc XRIGA : Proc MOSTRALARIGA[RIGA]
      Else 
       If DURATADELLARIGA=-1
        DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
       Else If DURATADELLARIGA=0
        T0GLILARIGA=RIGA : RIGA=0
       Else 
        Dec DURATADELLARIGA
       End If 
      End If 
     End If 
    End If 
    Proc MATTONCINIDIPOTENZIAMENTO[0,0]
    Proc BOINGINCAMPO
    If _PAPEROINCAMPO=VERO
     Proc _PAPEROINCAMPO
    End If 
    If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0
     Proc _PAPEROALIENOINCAMPO
     Proc MOLLAILGUANO
    Else 
     Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO
    End If 
    If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1
     ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
    End If 
    If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
     If ENTRATAINCAMPODELRUBAPALLINA=VERO
      Proc RUBAPALLINAINCAMPO
     End If 
    Else 
     Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
    End If 
    If RITARDODELLENTRATAINCAMPODEINEMICI=0
     If LASER>0
      Proc NEMICIINCAMPO
     Else 
      Proc CANCELLAINEMICIUNO : RITARDODELLENTRATAINCAMPODEINEMICI=-3000
     End If 
    Else If RITARDODELLENTRATAINCAMPODEINEMICI<0
     If RITARDODELLENTRATAINCAMPODEINEMICI=-1
      Proc IMPOSTAINEMICIUNO
     End If 
     Inc RITARDODELLENTRATAINCAMPODEINEMICI
    End If 
    If COMPORTAMENTODEINEMICI=0 and NEMICOUNO(0)>0
     If RITARDODELLENTRATAINCAMPODEINEMICI=0
      Proc ILNEMICOUNOHASPARATO[0]
     Else 
      If PROIETTILENEMICOUNO(0)>0
       Proc ILNEMICOUNOHASPARATO[0]
      End If 
     End If 
    End If 
    Bob Update 
    For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
     MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
     If MATTONCINO>0
      X0MATTONCINO=X0ZONA(MATTONCINO-1)
      Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
      If ESPLOSIONEMATTONCINO(MATTONCINO-1)>0
       IMMAGINEESPLOSIONEMATTONCINO=IMMAGINEESPLOSIONEMATTONCINO(ESPLOSIONEMATTONCINO(MATTONCINO-1))
       Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
       Paste Bob X0MATTONCINO,Y0MATTONCINO,IMMAGINEESPLOSIONEMATTONCINO
       Inc ESPLOSIONEMATTONCINO(MATTONCINO-1)
       If ESPLOSIONEMATTONCINO(MATTONCINO-1)=IMMAGINIESPLOSIONEMATTONCINO
        ESPLOSIONEMATTONCINO(MATTONCINO-1)=0
       End If 
      Else 
       If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
        TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
        If TIPODIMATTONCINO=0
         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
        Else If TIPODIMATTONCINO>0
         Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
        End If 
        Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
       Else 
        MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
        If TIPODIMATTONCINO=0 and MATTONCINO(MATTONCINO-1)=0
         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
         MATTONCINO(MATTONCINO-1)=-1
        End If 
       End If 
      End If 
     End If 
    Next MATTONCINODARIDISEGNARE
    If BONUS>0
     If RITARDODELDECREMENTODELBONUS=9
      RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
     Else 
      Inc RITARDODELDECREMENTODELBONUS
     End If 
    End If 
    Exit If MATTONCINI=0
    If RITARDODELGIOCO=1
     Wait Vbl 
    End If 
    Inc DURATADELGIOCO
    If MOTIVODIFONDOCARICATO=1
     If Timer-DURATADELMOTIVODIFONDO>50*15
      Proc SUONAILMOTIVODIFONDO : DURATADELMOTIVODIFONDO=Timer
     End If 
    End If 
   Until PALLINEINCAMPO=0
   Proc ANNULLAILRIDISEGNODEIMATTONCINI
   Proc CANCELLALABARRA
   Proc CANCELLALEPALLINE
   Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO[FALSO]
   Proc T0GLIILLASER
   Proc CANCELLAILRAGGIOLASER
   Proc CANCELLAILRUBAPALLINA
   Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
   Proc CANCELLAILPAPEROALIENO
   Proc CANCELLAILGUANO
   Proc CANCELLAIBOING
   Proc CANCELLAINEMICIUNO
   Proc CANCELLAIPROIETTILIDEINEMICIUNO
   Proc CANCELLALARIGA
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
   Exit If TASTOPREMUTO$=Chr$(27)
   Add TEMP0TRASCORSODIGIOCO,DURATADELGIOCO
   If MATTONCINI=0
    Proc AGGIUNGIALPUNTEGGIOILBONUS
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
    Proc AGGIORNAILPANNELLO
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
    Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
    Proc AGGIORNAILPANNELLO
    DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
    Inc LIVELLO
    INIZIODELLIVELLO=VERO
   End If 
   If PALLINEINCAMPO>0
    Proc CANCELLAIMATTONCINI
    Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO[VERO]
    Proc CARICAILLIVELLO
    Exit If LIVELLO<0
    Proc DABANCOAVARIABILI
    Proc METTIECONTAIMATTONCINI
    If M0DULOMEDCARICATO=VERO
     Proc CARICAUNMODULOMED
     Proc SUONAILMODULOMED
    End If 
   Else 
    C0LLA=FALSO
    RIMBALZODELLEPALLINESUIMATTONCINI=VERO
    If LASER>0
     Dec LASER
    End If 
    If _BARRE>0
     Dec _BARRE : PALLINEINCAMPO=1
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,5 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Boom 
    End If 
   End If 
  Until _BARRE=0
  Autoback 0
  If TASTOPREMUTO$<>Chr$(27)
   Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEBARRERIMASTEAFINEGIOCO
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
   Proc AGGIORNAILPANNELLO
   Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
   Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
   Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
   Proc MOSTRAILTEMPOTRASCORSODIGIOCOESALUTAILGIOCATORE
  End If 
 End If 
Until TASTO=-2
If M0DULOMEDCARICATO=VERO Then Proc FERMAILMODULOMED
Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
Autoback 1
Proc T0GLIIMATTONCINI
Proc T0GLIILPANNELLO
Proc T0GLILARCOBALENO
Show : Rainbow Del 0 : Screen Close 0 : Erase All : End 
Procedure AGGIORNAILPANNELLO
 'update the panel  
 Proc MOSTRALEBARRERIMASTE
 Proc MOSTRAILLIVELLO
 Proc MOSTRALAPOSIZIONE
 Proc MOSTRAILPUNTEGGIO[VERO]
 Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
 Proc MOSTRAILBONUS[VERO]
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUS
 'add the bonus to the score  
 If BONUS>0
  BONUS$="I am going to add the bonus points..."+ACAPO$
  BONUS$=BONUS$+"...to your game points."+ACAPO$
  BONUS$=BONUS$+"Wait for a moment, please..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  Repeat 
   TASTOPREMUTO$=Lower$(Inkey$)
   If TASTOPREMUTO$="p"
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
    Proc METTIILGIOCOINPAUSA
   End If 
   Dec BONUS : Proc MOSTRAILBONUS[FALSO]
   Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  Until BONUS=0
 Else 
  TASTOPREMUTO$=Lower$(Inkey$)
  If TASTOPREMUTO$="p"
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
   Proc METTIILGIOCOINPAUSA
  End If 
  BONUS$="There are no bonus points..."+ACAPO$
  BONUS$=BONUS$+"...to add to your game points."+ACAPO$
  BONUS$=BONUS$+"I am sorry..."+ACAPO$
  BONUS$=BONUS$+"...I wish a better luck for the next level."+ACAPO$
  BONUS$=BONUS$+"Press a (mouse) key to continue..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
 End If 
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
 'add 2 points to the score for every brick left  
 If MATTONCINIRIMASTI>0
  BONUS$="I am going to add the bricks left bonus points..."+ACAPO$
  BONUS$=BONUS$+"...to your game points,"+ACAPO$
  BONUS$=BONUS$+"adding two points for each brick left."+ACAPO$
  BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+ACAPO$
  BONUS$=BONUS$+"...wait for a moment, please..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
  Repeat 
   TASTOPREMUTO$=Lower$(Inkey$)
   If TASTOPREMUTO$="p"
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
    Proc METTIILGIOCOINPAUSA
   End If 
   Dec MATTONCINIRIMASTI
   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  Until MATTONCINIRIMASTI=0
 Else 
  TASTOPREMUTO$=Lower$(Inkey$)
  If TASTOPREMUTO$="p"
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
   Proc METTIILGIOCOINPAUSA
  End If 
  BONUS$="There are no bars left bonus points..."+ACAPO$
  BONUS$=BONUS$+"...to add to your game points."+ACAPO$
  BONUS$=BONUS$+"I am sorry..."+ACAPO$
  BONUS$=BONUS$+"...I wish a better luck for the next level."+ACAPO$
  BONUS$=BONUS$+"Press a (mouse) key to continue..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
 End If 
End Proc
Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEBARRERIMASTEAFINEGIOCO
 'add 500 points to the score for every ball left at the end of the game  
 If _BARRE>0
  Repeat 
   BONUS$="I am going to add the bars left bonus points..."+ACAPO$
   BONUS$=BONUS$+"...to your game points,"+ACAPO$
   BONUS$=BONUS$+"adding 500 points for each ball left."+ACAPO$
   BONUS$=BONUS$+"There are"+Str$(_BARRE)+" ball(s) left..."+ACAPO$
   BONUS$=BONUS$+"...wait for a moment, please..."
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1]
   TASTOPREMUTO$=Lower$(Inkey$)
   If TASTOPREMUTO$="p"
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
    Proc METTIILGIOCOINPAUSA
   End If 
   Dec _BARRE : Proc MOSTRALEBARRERIMASTE
   Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
   Sam Play VOCE,2 : Proc VOCESEGUENTE
   _ASPETTA[50]
  Until _BARRE=0
 Else 
  BONUS$="There are no balls left bonus points..."+ACAPO$
  BONUS$=BONUS$+"...to add to your game points."+ACAPO$
  BONUS$=BONUS$+"I am sorry..."+ACAPO$
  BONUS$=BONUS$+"...I wish a better luck for the next game."+ACAPO$
  BONUS$=BONUS$+"Press a (mouse) key to continue..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
 End If 
End Proc
Procedure ANNULLAILRIDISEGNODEIMATTONCINI
 'stop the hitted bricks redrawing  
 For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  If ESPLOSIONEMATTONCINO(MATTONCINODARIDISEGNARE)>0
   X0MATTONCINO=X0ZONA(MATTONCINODARIDISEGNARE)
   Y0MATTONCINO=Y0ZONA(MATTONCINODARIDISEGNARE)
         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
   ESPLOSIONEMATTONCINO(MATTONCINODARIDISEGNARE)=0
  Else 
   If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)>0
    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
   End If 
  End If 
 Next MATTONCINODARIDISEGNARE
End Proc
Procedure _ASPETTA[TEMP0DAASPETTARE]
 'wait for a (mouse or grey) key pressed: 
 ' if time to wait (TEMP0DAASPETTARE) is less than zero exit immediately; 
 ' if time to wait is equal to zero wait forever; 
 ' if time to wait is grater than zero wait the specified time. 
 TASTO=0 : TASTOSCANSITO=0 : Timer=0
 Repeat 
  TASTOPREMUTO$=Inkey$
  TASTOGRIGIO=Key Shift
  TASTOSCANSITO=Scancode
  TASTOPREMUTODELTOPO=Mouse Key
  If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift
   Add TASTO,TASTOGRIGIO*256 : Exit 
  End If 
  If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit 
  If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit 
  If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
  If TEMP0DAASPETTARE<0 Then Pop Proc
 Until TEMP0TRASCORSO>TEMP0DAASPETTARE
End Proc
Procedure BOINGINCAMPO
 'manage the boings 
 For BOING=0 To MASSIMOBOINGINCAMPO-1
  If BOING(BOING)>0
   If RITARDOBOING=0
    If BOINGMORTALE(BOING)=VERO
     If BOING(BOING)<14
      IMMAGINEBOINGMORTALE=BOING(BOING)-1
     Else If BOING(BOING)>13 and BOING(BOING)<39
      IMMAGINEBOINGMORTALE=13
     Else 
      IMMAGINEBOINGMORTALE=BOING(BOING)-26
     End If 
     Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOINGMORTALE(IMMAGINEBOINGMORTALE)
    Else 
     Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
    End If 
    Add XBOING(BOING),Rnd(4)-2
    Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
    Inc YBOING(BOING)
    If BOINGMORTALE(BOING)=VERO
     Add BOING(BOING),ROTAZIONEBOING(BOING),1 To 52
    Else 
     Add BOING(BOING),ROTAZIONEBOING(BOING),1 To 8
    End If 
   End If 
   Proc ILBOINGESTATOCOLPITO[BOING]
   Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  Else If BOING(BOING)=0
   XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOINGMORTALE=Rnd(1)
   If BOINGMORTALE=1
    BOING(BOING)=Rnd(51)+1 : BOINGMORTALE(BOING)=VERO
   Else 
    BOING(BOING)=Rnd(7)+1 : BOINGMORTALE(BOING)=FALSO
   End If 
   ROTAZIONEBOING(BOING)=Rnd(1)
   If ROTAZIONEBOING(BOING)=0
    ROTAZIONEBOING(BOING)=-1
   End If 
   If EFFETTISONORICARICATI=2
    Sam Play VOCE,10 : Proc VOCESEGUENTE
   Else If EFFETTISONORICARICATI=1
    Bell 60
   End If 
  Else If BOING(BOING)<0
   If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
    Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
   Else 
    Inc BOING(BOING)
   End If 
  End If 
 Next BOING
 Add RITARDOBOING,1,0 To 3
End Proc
Procedure CAMBIALALUNGHEZZADELLABARRA
 'change the bar size 
 If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
  If LUNGHEZZADELLABARRA=0
   If LUNGHEZZADELLABARRACAMBIATA=1
    Gosub LUNGHEZZADAZEROAUNO
   End If 
   If LUNGHEZZADELLABARRACAMBIATA=2
    Gosub LUNGHEZZADAZEROAUNO
    Gosub LUNGHEZZADAUNOADUE
   End If 
  Else If LUNGHEZZADELLABARRA=1
   If LUNGHEZZADELLABARRACAMBIATA=0
    Gosub LUNGHEZZADAUNOAZERO
   End If 
   If LUNGHEZZADELLABARRACAMBIATA=2
    Gosub LUNGHEZZADAUNOADUE
   End If 
  Else If LUNGHEZZADELLABARRA=2
   If LUNGHEZZADELLABARRACAMBIATA=0
    Gosub LUNGHEZZADADUEAUNO
    Gosub LUNGHEZZADAUNOAZERO
   End If 
   If LUNGHEZZADELLABARRACAMBIATA=1
    Gosub LUNGHEZZADADUEAUNO
   End If 
  End If 
 End If 
 LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
 Pop Proc
 LUNGHEZZADAZEROAUNO:
 'from small to medium bar  
 For OGGETTO=45 To 41 Step -1
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+5
  Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  Bob Update 
 Next OGGETTO
 Return 
 LUNGHEZZADAUNOADUE:
 'from medium to large bar  
 For OGGETTO=13 To 26
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+14
  Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  Bob Update 
 Next OGGETTO
 Return 
 LUNGHEZZADADUEAUNO:
 'from large to medium bar  
 For OGGETTO=26 To 13 Step -1
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+14
  Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  Bob Update 
 Next OGGETTO
 Return 
 LUNGHEZZADAUNOAZERO:
 'from medium to small bar  
 For OGGETTO=41 To 45
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,OGGETTO
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,OGGETTO+5
  Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  Bob Update 
 Next OGGETTO
 Return 
End Proc
Procedure CANCELLAIBOING
 'turn off all the boings 
 For BOING=0 To MASSIMOBOINGINCAMPO-1
  Bob Off OGGETTOBOING+BOING
 Next BOING
 Bob Update 
End Proc
Procedure CANCELLAILBOING[BOING]
 'turn off the specified boing  
 Bob Off OGGETTOBOING+BOING
 Bob Update 
End Proc
Procedure CANCELLAILGUANO
 Bob Off OGGETTOGUANO
 Bob Update 
 GUANOMOLLATO=FALSO
 GUANOINCAMPO=FALSO
End Proc
Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
 'turn off the specified bonus brick  
 Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
 Bob Update 
 MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
End Proc
Procedure CANCELLAILNEMICOUNO[NEMICOUNO]
 'turn off the specified enemy one
 Bob Off OGGETTONEMICOUNO+NEMICOUNO
 Bob Update 
End Proc
Procedure CANCELLAILPAPERO
 'turn off the duck 
 Bob Off OGGETTOPAPERO
 Bob Update 
End Proc
Procedure CANCELLAILPAPEROALIENO
 'turn off the alien duck 
 Bob Off OGGETTOPAPEROALIENO
 Bob Update 
 _PAPEROALIENO=0
 _PAPEROALIENOINCAMPO=FALSO
End Proc
Procedure CANCELLAILPROIETTILEDELNEMICOUNO[NEMICOUNO]
 'turn off the enemy one bullet 
 Bob Off OGGETTOPROIETTILENEMICOUNO+NEMICOUNO
 Bob Update 
End Proc
Procedure CANCELLAILRAGGIOLASER
 'turn off the laser ray  
 Bob Off OGGETTORAGGIOLASER
 Bob Update 
 RAGGIOLASERSPARATO=FALSO
End Proc
Procedure CANCELLAILRUBAPALLINA
 'turn off the ballthief  
 Bob Off OGGETTORUBAPALLINA
 Bob Update 
 Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
 PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
End Proc
Procedure CANCELLAIMATTONCINI
 'clear the bricks area   
 Cls 0,0,0 To XPANNELLO,Screen Height
 Screen Swap 
 Cls 0,0,0 To XPANNELLO,Screen Height
 Screen Swap 
End Proc
Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO[M0DO]
 'turn off all the bonus bricks 
 For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
   Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  End If 
  If M0DO=VERO Then MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
 Next MATTONCINODIPOTENZIAMENTO
 Bob Update 
End Proc
Procedure CANCELLAINEMICIUNO
 'turn off the enemies one
 For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
  Bob Off OGGETTONEMICOUNO+NEMICOUNO
 Next NEMICOUNO
 Bob Update 
End Proc
Procedure CANCELLAIPROIETTILIDEINEMICIUNO
 'turn off the enemies one bullets  
 For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
  Bob Off OGGETTOPROIETTILENEMICOUNO+NEMICOUNO
 Next NEMICOUNO
 Bob Update 
End Proc
Procedure CANCELLALABARRA
 'turn off the bar  
 Bob Off OGGETTOCENTRODELLABARRA
 Bob Off OGGETTOLATIDELLABARRA
 Bob Update 
End Proc
Procedure CANCELLALAPALLINA[PALLINA]
 'turn off the specified ball   
 Bob Off OGGETTOPALLINA+PALLINA
 Bob Update 
End Proc
Procedure CANCELLALARIGA
 'turn off the row  
 If RIGA>0
  T0GLILARIGA=RIGA : RIGA=0
 End If 
 For XRIGA=XRIGA To 0 Step -1
  Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl 
 Next XRIGA
 DURATADELLARIGA=-1
End Proc
Procedure CANCELLALEPALLINE
 'turn off all the balls  
 For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  Bob Off OGGETTOPALLINA+PALLINA
 Next PALLINA
 Bob Update 
End Proc
Procedure CARICAGLIEFFETTISONORI
 'load the sounds 
 If Chip Free<387662
  EFFETTISONORICARICATI=1
 Else 
  Load PERCORSODELLAMUSICA$+EFFETTISONORI$
  EFFETTISONORICARICATI=2
 End If 
End Proc
Procedure CARICAGLIOGGETTI
 'load the objects  
 Load PERCORSODELLAGRAFICA$+OGGETTI$
End Proc
Procedure CARICAILLIVELLO
 'load the level  
 LIVELLO$="Livello"+Str$(LIVELLO)-" "
 FILE$=PERCORSODEILIVELLI$+LIVELLO$
 If Exist(FILE$)
  Open In 1,FILE$
  MARCATORE$=Input$(1,9)
  LUNGHEZZABANCO=Lof(1)
  Close 1
  If MARCATORE$="Mattonite"
   Reserve As Work BANCODELLIVELLO,LUNGHEZZABANCO
   Bload FILE$,Start(BANCODELLIVELLO)
  End If 
 Else 
  LIVELLO= Not LIVELLO+1
 End If 
End Proc
Procedure CARICAUNMODULOMED
 'load the med module if there is space 
 Erase BANCODELMODULOMED
 M0DULOMEDCARICATO=Rnd(1)+1
 If M0DULOMEDCARICATO=1
  If Chip Free<107376
   M0DULOMEDCARICATO=FALSO
  Else 
   Med Load PERCORSODELLAMUSICA$+M0DULOMEDUNO$,BANCODELMODULOMED
   M0DULOMEDCARICATO=VERO
  End If 
 Else If M0DULOMEDCARICATO=2
  If Chip Free<119072
   M0DULOMEDCARICATO=FALSO
  Else 
   Med Load PERCORSODELLAMUSICA$+M0DULOMEDDUE$,BANCODELMODULOMED
   M0DULOMEDCARICATO=VERO
  End If 
 End If 
End Proc
Procedure CARICAILMOTIVODIFONDO
 'load the background motive
 MOTIVODIFONDO$="FunkFloor.8svx"
 FILE$=PERCORSODELLAMUSICA$+MOTIVODIFONDO$
 If Exist(FILE$)
  Open In 1,FILE$
  LUNGHEZZABANCO=Max(Lof(1),512)
  Close 1
  MEMORIA=Chip Free+Fast Free
  If LUNGHEZZABANCO>MEMORIA
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
   SENZAMEMORIA$="There is no enough memory"+ACAPO$
   SENZAMEMORIA$=SENZAMEMORIA$+"to load the background music."+ACAPO$
   SENZAMEMORIA$=SENZAMEMORIA$+"Press a (mouse) key to continue..."
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[SENZAMEMORIA$,21,20,1,250]
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
   Put Block 2
   MOTIVODIFONDOCARICATO=0
  Else 
   Reserve As Work BANCOTEMPORANEO,LUNGHEZZABANCO
   Bload FILE$,Start(BANCOTEMPORANEO)
   SEPARATORE=Instr(FILE$,":") : POSIZIONECARATTERE=1
   For A=1 To Len(FILE$)
    If Instr(FILE$,"/",POSIZIONE)>0
     SEPARATORECASSETTO=Instr(FILE$,"/",POSIZIONECARATTERE)
     POSIZIONECARATTERE=SEPARATORECASSETTO+1
    End If 
   Next A
   SEPARATORE=Max(SEPARATORE,SEPARATORECASSETTO)
   PERCORSO$=Left$(FILE$,SEPARATORE)
   If Right$(PERCORSO$,1)="/"
    PERCORSO$=Left$(PERCORSO$,Len(PERCORSO$)-1)
   End If 
   NOMEFILE$=Right$(FILE$,Len(FILE$)-SEPARATORE)
   MOTIVODIFONDOCARICATO=1
  End If 
 Else 
  Get Block 2,0,0,Screen Width,Screen Height
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  NONTROVOILMOTIVODIFONDO$="I cannot find the background music."+ACAPO$
  NONTROVOILMOTIVODIFONDO$=NONTROVOILMOTIVODIFONDO$+"Press a (mouse) key to continue..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONTROVOILMOTIVODIFONDO$,21,20,1,250]
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
  Put Block 2
  MOTIVODIFONDOCARICATO=0
 End If 
End Proc
Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
 'load the top hundred scores 
 If Exist(PUNTEGGI$)
  CENTOGIOCATORI$=""
  Open In 1,PUNTEGGI$
  For POSIZIONE=0 To 99
   Exit If Eof(1)
   Input #1,NOMEDELGIOCATORE$(POSIZIONE)
   CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
   CENTOGIOCATORI$=CENTOGIOCATORI$+NOMEDELGIOCATORE$(POSIZIONE)+ACAPO$
   Input #1,PUNTEGGIODELGIOCATORE$(POSIZIONE)
   CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIODELGIOCATORE$(POSIZIONE)
   CENTOGIOCATORI$=CENTOGIOCATORI$+" points up to level "
   Input #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
   CENTOGIOCATORI$=CENTOGIOCATORI$+LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE)
   If Not Eof(1)
    CENTOGIOCATORI$=CENTOGIOCATORI$+ACAPO$
   End If 
  Next POSIZIONE
  Close 1
  PUNTEGGIOMASSIMO=Val(PUNTEGGIODELGIOCATORE$(0))
  Inc POSIZIONE
 End If 
End Proc
Procedure CARICARAWOIFF
 'recognize between raw or iff sample giving a sample in bank ready to be used  
 INDIRIZZO=Start(BANCOTEMPORANEO)+8
 If Peek$(INDIRIZZO,4)="8SVX"
  Add INDIRIZZO,12
  LUNGHEZZABANCO=Leek(INDIRIZZO)
  If LUNGHEZZABANCO=0
   Add INDIRIZZO,4
   LUNGHEZZABANCO=Leek(INDIRIZZO)
  Else 
   Add INDIRIZZO,4
  End If 
  Add INDIRIZZO,8
  FREQUENZA=Deek(INDIRIZZO)
  Add INDIRIZZO,8
  If Peek$(INDIRIZZO,4)="NAME"
   Add INDIRIZZO,4
   DATO=Leek(INDIRIZZO)
   Add INDIRIZZO,4+DATO
  End If 
  If Peek$(INDIRIZZO,4)="ANNO"
   Add INDIRIZZO,4
   DATO=Leek(INDIRIZZO)
   Add INDIRIZZO,4
   ANNOTAZIONI$=Peek$(INDIRIZZO,DATO)-Chr$(0)
   Add INDIRIZZO,DATO
  End If 
  If Peek$(INDIRIZZO,4)="BODY"
   Add INDIRIZZO,4
   LUNGHEZZADATI=Leek(INDIRIZZO)
   Add INDIRIZZO,4
   LUNGHEZZABANCO=Max(LUNGHEZZABANCO,LUNGHEZZADATI)
   Reserve As Chip Work BANCODELMOTIVODIFONDO,LUNGHEZZABANCO
   Copy INDIRIZZO,INDIRIZZO+LUNGHEZZABANCO-1 To Start(BANCODELMOTIVODIFONDO)
  Else 
   ANOMALOIFF$="The file loaded is an abnormal IFF sound."+ACAPO$
   ANOMALOIFF$=ANOMALOIFF$+"Press a (mouse) key to continue..."
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[SENZAMEMORIA$,21,20,1,250]
   NOMEFILE$=""
  End If 
 Else 
  LUNGHEZZABANCO=Length(BANCOTEMPORANEO)
  Reserve As Chip Work BANCODELMOTIVODIFONDO,LUNGHEZZABANCO
  Copy Start(BANCOTEMPORANEO),Start(BANCOTEMPORANEO)+LUNGHEZZABANCO-1 To Start(BANCODELMOTIVODIFONDO)
 End If 
 Erase BANCOTEMPORANEO
End Proc
Procedure CREALEIMMAGINIPERLERIGHE
 'create the row images 
 XFINALERIGA=XPANNELLO-1
 IMMAGINERIGAUNO=IMMAGINEPALLINA+1
 Ink 20 : Bar 0,251 To XFINALERIGA,255
 Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
 Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
 IMMAGINERIGADUE=IMMAGINERIGAUNO+1
 Ink 21 : Bar 0,251 To XFINALERIGA,255
 Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
 Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
 IMMAGINERIGATRE=IMMAGINERIGADUE+1
 Ink 22 : Bar 0,251 To XFINALERIGA,255
 Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
 Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
 Ink 0 : Bar 0,251 To XFINALERIGA,255
End Proc
Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
 'create outlined text  
 Ink C0LOREBORDO
 Text XTESTO,YTESTO-1,TESTO$
 Text XTESTO+1,YTESTO-1,TESTO$
 Text XTESTO+1,YTESTO,TESTO$
 Text XTESTO+1,YTESTO+1,TESTO$
 Text XTESTO,YTESTO+1,TESTO$
 Text XTESTO-1,YTESTO+1,TESTO$
 Text XTESTO-1,YTESTO,TESTO$
 Text XTESTO-1,YTESTO-1,TESTO$
 Ink C0LORETESTO
 Text XTESTO,YTESTO,TESTO$
End Proc
Procedure DABANCOAVARIABILI
 'copy from bank to variables 
 If Length(BANCODELLIVELLO)>0
  INDIRIZZO=Start(BANCODELLIVELLO)+9
  For A=0 To 246
   MATTONCINO(A)=Peek(INDIRIZZO)
   Inc INDIRIZZO
  Next A
  For A=0 To 255
   ARCOBALENO=Peek(INDIRIZZO)
   Inc INDIRIZZO
   ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
   Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
   Wait Vbl 
   Inc INDIRIZZO
  Next A
  BONUS=Peek(INDIRIZZO)
  Inc INDIRIZZO
  Add BONUS,Peek(INDIRIZZO)*100
  Inc INDIRIZZO
  Add BONUS,Peek(INDIRIZZO)*10000
  Inc INDIRIZZO
  Add BONUS,Peek(INDIRIZZO)*1000000
  Inc INDIRIZZO
 End If 
 Erase BANCODELLIVELLO
End Proc
Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
 'fade the colours  
 If M0DO=0
  For C=0 To C0LORIDELLOSCHERMOMENOUNO
   Colour C,C0LORE
   If VELOCITA>0
    Wait VELOCITA
   End If 
  Next C
 Else 
  Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
  Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
  Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
  For C=0 To C0LORIDELLOSCHERMOMENOUNO
   If M0DO=1
    ROSSOFINALE(C)=C0LORE/256
    VERDEFINALE(C)=C0LORE/16 mod 16
    BLUFINALE(C)=C0LORE mod 16
   Else If M0DO=2
    ROSSOFINALE(C)=C0LORE(C)/256
    VERDEFINALE(C)=C0LORE(C)/16 mod 16
    BLUFINALE(C)=C0LORE(C) mod 16
   End If 
   ROSSO(C)=Colour(C)/256
   VERDE(C)=Colour(C)/16 mod 16
   BLU(C)=Colour(C) mod 16
  Next C
  Repeat 
   For C=0 To C0LORIDELLOSCHERMOMENOUNO
    If ROSSODISSOLTO(C)=FALSO
     If ROSSO(C)<ROSSOFINALE(C)
      Inc ROSSO(C)
     Else If ROSSO(C)=ROSSOFINALE(C)
      ROSSODISSOLTO(C)=VERO
     Else If ROSSO(C)>ROSSOFINALE(C)
      Dec ROSSO(C)
     End If 
    End If 
    If VERDEDISSOLTO(C)=FALSO
     If VERDE(C)<VERDEFINALE(C)
      Inc VERDE(C)
     Else If VERDE(C)=VERDEFINALE(C)
      VERDEDISSOLTO(C)=VERO
     Else If VERDE(C)>VERDEFINALE(C)
      Dec VERDE(C)
     End If 
    End If 
    If BLUDISSOLTO(C)=FALSO
     If BLU(C)<BLUFINALE(C)
      Inc BLU(C)
     Else If BLU(C)=BLUFINALE(C)
      BLUDISSOLTO(C)=VERO
     Else If BLU(C)>BLUFINALE(C)
      Dec BLU(C)
     End If 
    End If 
    Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
    If C=0
     C0LORIDISSOLTI=0
    End If 
    If ROSSODISSOLTO(C)=VERO
     If VERDEDISSOLTO(C)=VERO
      If BLUDISSOLTO(C)=VERO
       Inc C0LORIDISSOLTI
      End If 
     End If 
    End If 
   Next C
   If VELOCITA>0
    Wait VELOCITA
   End If 
  Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
 End If 
End Proc
Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
 'let the player type his/her name and then insert this and the and score in the  
 ' the top hundred scores 
 GIOCATORE$="Anonymous"
 Repeat 
  MESSAGGIO$=""
  MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+ACAPO$
  MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+ACAPO$
  MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+ACAPO$
  MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+ACAPO$
  MESSAGGIO$=MESSAGGIO$+"Press the Esc key to undo the saving of your"+ACAPO$
  MESSAGGIO$=MESSAGGIO$+"name and score in the top hundred list."+ACAPO$
  MESSAGGIO$=MESSAGGIO$+"[>"+GIOCATORE$+"<]"+ACAPO$
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000]
  If TASTO=0 and TASTOSCANSITO=0
   GIOCATORE$="Anonymous" : TASTO=13
  End If 
  If TASTO>255
   TASTO=TASTO mod 256
  End If 
  If TASTO=8
   GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
  Else If TASTO=27
   TASTO=13 : TASTOESCAPEPREMUTO=VERO
  Else If TASTO>31
   GIOCATORE$=GIOCATORE$+Chr$(TASTO)
  End If 
 Until TASTO=13
 If TASTOESCAPEPREMUTO=FALSO
  For POSIZIONI=98 To 0 Step -1
   If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))<PUNTEGGIO
    NOMEDELGIOCATORE$(POSIZIONI+1)=NOMEDELGIOCATORE$(POSIZIONI)
    PUNTEGGIODELGIOCATORE$(POSIZIONI+1)=PUNTEGGIODELGIOCATORE$(POSIZIONI)
    LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI+1)=LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
   End If 
  Next POSIZIONI
  NOMEDELGIOCATORE$(POSIZIONE-1)=GIOCATORE$
  PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=Str$(PUNTEGGIO)-" "
  If LIVELLO<0
   LIVELLO= Not LIVELLO
  End If 
  LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE-1)=Str$(LIVELLO)-" "
 End If 
End Proc
Procedure FERMAILMODULOMED
 'stop the med module 
 Med Stop 
End Proc
Procedure HAISPARATOILRAGGIOLASER
 'fire the laser ray  
 If LASER>0 and RAGGIOLASERSPARATO=FALSO
  XLASER=XBARRA : YLASER=YBARRA-5 : IMMAGINERAGGIOLASER=9+LASER
  RAGGIOLASERSPARATO=VERO
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Shoot 
  End If 
 End If 
End Proc
Procedure ILBOINGESTATOCOLPITO[BOING]
 'check if the specified boing has been hitted  
 If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  PALLINA=Col(-1)-OGGETTOPALLINA
  XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
  If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
   DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  End If 
  YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
  If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
   DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  End If 
  Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
  BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Bell 3
  End If 
 Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  Proc CANCELLAILRAGGIOLASER
  Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Bell 2
  End If 
 Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  If BOINGMORTALE(BOING)=VERO
   EFFETTODELBOINGMORTALE=Rnd(3)
   If EFFETTODELBOINGMORTALE=3
    Proc CANCELLALEPALLINE
    PALLINEINCAMPO=0
   Else If EFFETTODELBOINGMORTALE=2
    If LASER>0
     Dec LASER
    End If 
   Else If EFFETTODELBOINGMORTALE=1
    _BARRABLOCCATA=50+LIVELLO
   End If 
  End If 
  Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Bell 1
  End If 
 End If 
End Proc
Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
 'check if the specified boing has gone out of the game field 
 If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
End Proc
Procedure ILGUANOEUSCITODALCAMPODIGIOCO
 'check if the guano has gone out of the game field 
 If YGUANO>255 Then Proc CANCELLAILGUANO
End Proc
Procedure ILNEMICOUNOESTATOCOLPITO[NEMICOUNO]
 'check if the specified enemy one has been hitted  
 If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  PALLINA=Col(-1)-OGGETTOPALLINA
  XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XNEMICOUNO(NEMICOUNO)-Int(XPALLINA#(PALLINA)))
  If XDISTANZADELLAPALLINADALBOINGCOLPITO>11
   DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  End If 
  YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YNEMICOUNO(NEMICOUNO)-Int(YPALLINA#(PALLINA)))
  If YDISTANZADELLAPALLINADALBOINGCOLPITO>11
   DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  End If 
  Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Bell 3
  End If 
  NEMICOUNOCOLPITO=VERO
 Else If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  Proc CANCELLAILRAGGIOLASER
  Add PUNTEGGIO,4 : Proc MOSTRAILPUNTEGGIO[VERO]
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Bell 2
  End If 
  NEMICOUNOCOLPITO=VERO
 Else If Bob Col(OGGETTONEMICOUNO+NEMICOUNO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Bell 1
  End If 
  NEMICOUNOCOLPITO=VERO
 End If 
 If NEMICOUNOCOLPITO=VERO
  Proc CANCELLAILNEMICOUNO[NEMICOUNO] : NEMICOUNO(NEMICOUNO)=0
  RITARDODELLENTRATAINCAMPODEINEMICI=-3000
 End If 
End Proc
Procedure ILNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
 'check if the specified enemy one has gone out of the game field 
 If COMPORTAMENTODEINEMICI=0
  If XDIPARTENZANEMICOUNO(NEMICOUNO)=0
   If XNEMICOUNO(NEMICOUNO)=Screen Width-LARGHEZZAPANNELLO+11
    Proc CANCELLAILNEMICOUNO[NEMICOUNO]
    If COMPORTAMENTODEINEMICI<MASSIMOCOMPORTAMENTIDEINEMICI-1
     Inc COMPORTAMENTODEINEMICI
    End If 
    NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
   End If 
  Else If XDIPARTENZANEMICOUNO(NEMICOUNO)=1
   If XNEMICOUNO(NEMICOUNO)=-11
    Proc CANCELLAILNEMICOUNO[NEMICOUNO]
    If COMPORTAMENTODEINEMICI<MASSIMOCOMPORTAMENTIDEINEMICI-1
     Inc COMPORTAMENTODEINEMICI
    End If 
    NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
   End If 
  End If 
  If NEMICOUNOUSCITODALCAMPODIGIOCO=VERO
   Proc CANCELLAILNEMICOUNO[NEMICOUNO] : NEMICOUNO(NEMICOUNO)=0
   RITARDODELLENTRATAINCAMPODEINEMICI=-3000
  End If 
 End If 
End Proc
Procedure ILNEMICOUNOHASPARATO[NEMICOUNO]
 'manage the enemy one bullet 
 If NEMICOUNO(NEMICOUNO)=1 or NEMICOUNO(NEMICOUNO)=2 or NEMICOUNO(NEMICOUNO)=36
  If PROIETTILENEMICOUNO(NEMICOUNO)=0
   PROIETTILENEMICOUNO(NEMICOUNO)=1
  End If 
 End If 
 If PROIETTILENEMICOUNO(NEMICOUNO)>0
  Bob OGGETTOPROIETTILENEMICOUNO+NEMICOUNO,XPROIETTILENEMICOUNO(NEMICOUNO),YPROIETTILENEMICOUNO(NEMICOUNO),IMMAGINEPROIETTILENEMICIUNO
 End If 
 If PROIETTILENEMICOUNO(NEMICOUNO)=1
  XPROIETTILENEMICOUNO(NEMICOUNO)=XNEMICOUNO(NEMICOUNO)
  YPROIETTILENEMICOUNO(NEMICOUNO)=YNEMICOUNO(NEMICOUNO)+11
  DIVISOREMOVIMENTOPROIETTILENEMICOUNO=Min(Abs(XBARRA-XNEMICOUNO(NEMICOUNO)),Abs(YBARRA-YNEMICOUNO(NEMICOUNO)))
  DELTAXPROIETTILENEMICOUNO#(NEMICOUNO)=((XBARRA-XNEMICOUNO(NEMICOUNO))/DIVISOREMOVIMENTOPROIETTILENEMICOUNO)
  DELTAYPROIETTILENEMICOUNO#(NEMICOUNO)=((YBARRA-YNEMICOUNO(NEMICOUNO))/DIVISOREMOVIMENTOPROIETTILENEMICOUNO)
  PROIETTILENEMICOUNO(NEMICOUNO)=2
 Else If PROIETTILENEMICOUNO(NEMICOUNO)=2
  Add XPROIETTILENEMICOUNO(NEMICOUNO),Int(DELTAXPROIETTILENEMICOUNO#(NEMICOUNO))
  Add YPROIETTILENEMICOUNO(NEMICOUNO),Int(DELTAYPROIETTILENEMICOUNO#(NEMICOUNO))
  Proc ILPROIETTILEDELNEMICOUNOHACOLPITOLABARRA[NEMICOUNO]
  Proc ILPROIETTILEDELNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
 Else If PROIETTILENEMICOUNO(NEMICOUNO)=3
  Proc CANCELLAILPROIETTILEDELNEMICOUNO[NEMICOUNO]
  PROIETTILENEMICOUNO(NEMICOUNO)=0
 End If 
End Proc
Procedure ILPAPEROALIENOESTATOCOLPITO
 'check if the alien duck has been hitted 
 If Bob Col(OGGETTOPAPEROALIENO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  PALLINA=Col(-1)-OGGETTOPALLINA
  XPALLINA=Int(XPALLINA#(PALLINA))
  XDISTANZADELLAPALLINADALPAPEROALIENO=Abs(XPAPEROALIENO-XPALLINA)
  If XDISTANZADELLAPALLINADALPAPEROALIENO>12
   DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  End If 
  YPALLINA=Int(YPALLINA#(PALLINA))
  YDISTANZADELLAPALLINADALPAPEROALIENO=YPAPEROALIENO-YPALLINA
  If YDISTANZADELLAPALLINADALPAPEROALIENO>-21 and YDISTANZADELLAPALLINADALPAPEROALIENO<10
   DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  End If 
  Add PUNTEGGIO,24 : Proc MOSTRAILPUNTEGGIO[VERO]
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Boom 
  End If 
  _PAPEROALIENOCOLPITO=VERO
 Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  Proc CANCELLAILRAGGIOLASER
  Add PUNTEGGIO,12 : Proc MOSTRAILPUNTEGGIO[VERO]
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Boom 
  End If 
  _PAPEROALIENOCOLPITO=VERO
 Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO]
  If EFFETTISONORICARICATI=2
   Sam Play VOCE,9 : Proc VOCESEGUENTE
  Else If EFFETTISONORICARICATI=1
   Boom 
  End If 
  _PAPEROALIENOCOLPITO=VERO
 End If 
 If _PAPEROALIENOCOLPITO=VERO
  Proc CANCELLAILPAPEROALIENO
  Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
  Proc CANCELLAILGUANO
 End If 
End Proc
Procedure ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
 'check if the alien duck has gone out of the game field  
 If YPAPEROALIENO>255+9 Then Proc CANCELLAILPAPEROALIENO
End Proc
Procedure ILPROIETTILEDELNEMICOUNOEUSCITODALCAMPODIGIOCO[NEMICOUNO]
 'check if the ballthief has gone out of the game field 
 If XPROIETTILENEMICOUNO(NEMICOUNO)<-4 or XPROIETTILENEMICOUNO(NEMICOUNO)>XPANNELLO-4
  PROIETTILENEMICOUNO(NEMICOUNO)=3
 End If 
 If YPROIETTILENEMICOUNO(NEMICOUNO)>255+4
  PROIETTILENEMICOUNO(NEMICOUNO)=3
 End If 
End Proc
Procedure ILPROIETTILEDELNEMICOUNOHACOLPITOLABARRA[NEMICOUNO]
 'check if the enemy one bullet has been hitted the bar 
 If Bob Col(OGGETTOPROIETTILENEMICOUNO+NEMICOUNO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  If _BARRE>0
   Dec _BARRE
  End If 
  PALLINEINCAMPO=0
  PROIETTILENEMICOUNO(NEMICOUNO)=3
 End If 
End Proc
Procedure ILRUBAPALLINAESTATOCOLPITO
 'check if the ballthief has been hitted  
 If RUBAPALLINACOLPITO=FALSO
  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
   If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
    If PALLINA<>PALLINAPRESADALRUBAPALLINA
     If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO
      XPALLINA=Int(XPALLINA#(PALLINA))
      XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA)
      If XDISTANZADELLAPALLINADALRUBAPALLINA>12
       DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
      End If 
      YPALLINA=Int(YPALLINA#(PALLINA))
      YDISTANZADELLAPALLINADALRUBAPALLINA=YRUBAPALLINA-YPALLINA
      If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11
       DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
      End If 
      Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO]
      If EFFETTISONORICARICATI=2
       Sam Play VOCE,9 : Proc VOCESEGUENTE
      Else If EFFETTISONORICARICATI=1
       Boom 
      End If 
      RUBAPALLINACOLPITO=VERO
     End If 
    End If 
   End If 
  Next PALLINA
  If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
   Proc CANCELLAILRAGGIOLASER
   Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO]
   If EFFETTISONORICARICATI=2
    Sam Play VOCE,9 : Proc VOCESEGUENTE
   Else If EFFETTISONORICARICATI=1
    Boom 
   End If 
   RUBAPALLINACOLPITO=VERO
  Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
   Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO]
   If EFFETTISONORICARICATI=2
    Sam Play VOCE,9 : Proc VOCESEGUENTE
   Else If EFFETTISONORICARICATI=1
    Boom 
   End If 
   RUBAPALLINACOLPITO=VERO
  End If 
 Else 
  Inc IMMAGINERUBAPALLINA
  If IMMAGINERUBAPALLINA=10
   Proc CANCELLAILRUBAPALLINA
   Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
   If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
    PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO
   End If 
   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
   IMMAGINERUBAPALLINA=0
   RUBAPALLINACOLPITO=FALSO
  End If 
 End If 
End Proc
Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
 'check if the ballthief has gone out of the game field 
 If YRUBAPALLINA<-4
  Dec PALLINEINCAMPO
  Proc CANCELLAILRUBAPALLINA
  PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
 End If 
End Proc
Procedure IMPOSTAGLIOGGETTI
 'set the object images 
 IMMAGINEPALLINA=Length(1)
 IMMAGINEPROIETTILENEMICIUNO=IMMAGINEPALLINA-1
 IMMAGINELASER=6
 MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2-IMMAGINIESPLOSIONEMATTONCINO-116
 For IMMAGINE=0 To IMMAGININEMICOUNO-1
  IMMAGINENEMICOUNO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO+IMMAGINE
 Next IMMAGINE
 For IMMAGINE=0 To IMMAGINIBOINGMORTALE-1
  IMMAGINEBOINGMORTALE(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE+IMMAGINE
 Next IMMAGINE
 For IMMAGINE=0 To IMMAGINIBOING-1
  IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING+IMMAGINE
 Next IMMAGINE
 For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1
  IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE
 Next IMMAGINE
 IMMAGINEGUANO=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO
 For IMMAGINE=0 To IMMAGINIPAPERO-1
  IMMAGINEPAPEROALIENO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO+IMMAGINE
 Next IMMAGINE
 For IMMAGINE=0 To IMMAGINIPAPERO-1
  IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIPROIETTILENEMICIUNO-IMMAGININEMICOUNO-IMMAGINIBOINGMORTALE-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2+IMMAGINE
 Next IMMAGINE
 For IMMAGINE=0 To 12
  IMMAGINEESPLOSIONEMATTONCINO(IMMAGINE)=IMMAGINE+116
 Next IMMAGINE
End Proc
Procedure IMPOSTAIBOING
 'set the boings to their initial status    
 For BOING=0 To MASSIMOBOINGINCAMPO-1
  BOING(BOING)=0
 Next BOING
End Proc
Procedure IMPOSTAICOLORI
 'remember the screen palette 
 Get Bob Palette 
 C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
 If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
 For C=0 To C0LORIDELLOSCHERMOMENOUNO
  C0LORE(C)=Colour(C)
 Next C
End Proc
Procedure IMPOSTAILAMPEGGI
 'set the colour flashes  
 Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
 Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
 Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
End Proc
Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO
 'time waiting for the alien duck 
 RITARDODELLENTRATAINCAMPODELPAPEROALIENO=29475-LIVELLO*25
End Proc
Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
 'time waiting for the ballthief
 RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50
End Proc
Procedure IMPOSTAINEMICIUNO
 For NEMICOUNO=0 To MASSIMONEMICIUNOINCAMPO-1
  NEMICOUNO(NEMICOUNO)=0
 Next NEMICOUNO
End Proc
Procedure IMPOSTAIPERCORSIDEIFILE
 'look for the file paths 
 PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
 PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
 PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
End Proc
Procedure IMPOSTALADURATADELLERIGHE
 'set the time duration of the rows in 50th of a second   
 DURATADELLARIGA(0)=3000
 DURATADELLARIGA(1)=9000
 DURATADELLARIGA(2)=27000
End Proc
Procedure IMPOSTALARCOBALENO
 'set the rainbow 
 Set Rainbow 0,0,271,"","",""
 For LINEADELLARCOBALENO=0 To 255
  Rain(0,LINEADELLARCOBALENO)=$FFF
 Next LINEADELLARCOBALENO
 Rainbow 0,257,0,271
End Proc
Procedure IMPOSTALEPALLINE
 'set the bouncign of the balls to their initial state  
 For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  If PALLINA<PALLINEINCAMPO
   PALLINA(PALLINA)=VERO
   VELOCITADELLAPALLINA#(PALLINA)=1
   D1REZIONEXPALLINA=Rnd(1)
   LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
   If D1REZIONEXPALLINA=1
    DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
   Else 
    DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
   End If 
   DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  Else 
   PALLINA(PALLINA)=FALSO
   Proc CANCELLALAPALLINA[PALLINA]
  End If 
  LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
 Next PALLINA
End Proc
Procedure IMPOSTALEZONEDEIMATTONCINI
 'set the brick detection zones 
 Reserve Zone 264
 For MATTONCINO=0 To 246
  LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
  X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
  Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
  X0MATTONCINO=X0ZONA(MATTONCINO)
  Y0MATTONCINO=Y0ZONA(MATTONCINO)
  If RIGADELMATTONCINO=12
   X1MATTONCINO=X0MATTONCINO+19
   Y1MATTONCINO=Y0MATTONCINO+9
  Else 
   X1MATTONCINO=X0MATTONCINO+20
   Y1MATTONCINO=Y0MATTONCINO+10
  End If 
  Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
 Next MATTONCINO
End Proc
Procedure IMPOSTALINGOMBRODELLABARRA
 'set the length of the bars from the center to an edge 
 INGOMBRODELLABARRA(0)=10
 INGOMBRODELLABARRA(1)=16
 INGOMBRODELLABARRA(2)=31
End Proc
Procedure IMPOSTALOSCHERMO
 'set the screen  
 Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
 Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Double Buffer : Update Off 
 Autoback 0 : Limit Mouse 
End Proc
Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
 ' Look for the position of the program 
 PERCORSO$=Dir$
End Proc
Procedure LABARRAESTATACOLPITADALGUANO
 'check if the bar has been hitted by the guano 
 If GUANOINCAMPO=VERO and GUANOMOLLATO=VERO
  If Bob Col(OGGETTOGUANO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
   EFFETTODELGUANO=Rnd(2)
   If EFFETTODELGUANO=2
    If LASER>0
     Dec LASER
    End If 
   Else If EFFETTODELGUANO=1
    _BARRABLOCCATA=50+LIVELLO
   End If 
   Proc CANCELLAILGUANO
  End If 
 End If 
End Proc
Procedure LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO
 'check if the bar  has been hitted by the reflected laser ray  
 If RAGGIOLASERSPARATO=VERO and RAGGIOLASERRIFLESSO=VERO
  If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
   EFFETTODELRAGGIOLASERRIFLESSO=Rnd(2)
   If EFFETTODELRAGGIOLASERRIFLESSO=2
    If LASER>0
     Dec LASER
    End If 
   Else If EFFETTODELRAGGIOLASERRIFLESSO=1
    _BARRABLOCCATA=50+LIVELLO
   End If 
   Proc CANCELLAILRAGGIOLASER
   RAGGIOLASERRIFLESSO=FALSO
  End If 
 End If 
End Proc
Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
 'check if the specified ball has gone out of the game field  
 If YPALLINA#(PALLINA)>255+4
  Proc CANCELLALAPALLINA[PALLINA]
  PALLINA(PALLINA)=FALSO
  Dec PALLINEINCAMPO
 End If 
End Proc
Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
 'check if the specified ball has hitted the bar  
 If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
   If C0LLA=VERO
    XCOLLA(PALLINA)=Int(XBARRA-XPALLINA#(PALLINA))
    YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
    LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
   End If 
   If Col(OGGETTOCENTRODELLABARRA)=VERO
    If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
     DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
     DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
     LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
    Else 
     DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,2 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Boom 
    End If 
   Else If Col(OGGETTOLATIDELLABARRA)=VERO
    If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
     DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
    Else 
     DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
     DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
     LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Boom 
    End If 
   End If 
   LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
  End If 
 Else 
  LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
 End If 
End Proc
Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
 'check if the specified ball has hitted the row  
 If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
  If DELTAYPALLINA#(PALLINA)>0
   DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
   If EFFETTISONORICARICATI=2
    Sam Play VOCE,7 : Proc VOCESEGUENTE
   Else If EFFETTISONORICARICATI=1
    Bell 96
   End If 
  End If 
 End If 
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRA
 'lock bar movements  
 X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
 Y0LIMITETOPO=Y Hard(0)
 X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
 Y1LIMITETOPO=Y Hard(Screen Height-1)
 Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
 ' Lock bar movements while it is changing
 If OGGETTO>39 and OGGETTO<46
  INGOMBRODELLABARRA=46-OGGETTO+10
 Else If OGGETTO>12 and OGGETTO<27
  INGOMBRODELLABARRA=OGGETTO+4
 End If 
 X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
 Y0LIMITETOPO=Y Hard(0)
 X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
 Y1LIMITETOPO=Y Hard(Screen Height-1)
 Wait Vbl 
 Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
End Proc
Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
 '-> Limiti by Stefano Regattin 
 'i> 19 maggio 1996 
 'm> 12 giugno 1996 
 '--------------------------------------------------------
 'La procedura equivale alle seguenti linee di programma: 
 ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
 ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
 'Se LIMITEMINIMO è maggiore di LIMITEMASSIMO ne scambia i valori 
 '----------------------------------------------------------------  
 If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
 NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
End Proc[NUMERO]
Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
 'manage the bonus bricks 
 If ESCESEUGUALEAZERO>0 Then Pop Proc
 If MATTONCINO=0
  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
   TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
   If TIPODIMATTONCINODIPOTENZIAMENTO>0
    IMMAGINE=115+IMMAGINIESPLOSIONEMATTONCINO+TIPODIMATTONCINODIPOTENZIAMENTO
    Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),IMMAGINE
    Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
    Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
    Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
   End If 
  Next MATTONCINODIPOTENZIAMENTO
 Else 
  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
   TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
   If TIPODIMATTONCINODIPOTENZIAMENTO=0
    If MATTONCINO>0
     MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(29)+1
     XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
     YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
    Else If MATTONCINO<0
     MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
     XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
     YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
    End If 
    Exit 
   End If 
  Next MATTONCINODIPOTENZIAMENTO
 End If 
End Proc
Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
 'check if a brick has been hitted by the specified ball  
 XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
 MATTONCINO=Zone(XPALLINA,YPALLINA)
 If MATTONCINO>0
  MATTONELLA=MATTONCINO(MATTONCINO-1)
  If MATTONELLA>0
   If MATTONELLA<10
    MATTONCINOELIMINATODALLAPALLINA=VERO
   Else If MATTONELLA>9 and MATTONELLA<28
    Add MATTONELLA,-9
    MATTONCINO(MATTONCINO-1)=MATTONELLA
    Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
   Else 
    Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
    MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
   End If 
   If MATTONCINOELIMINATODALLAPALLINA=VERO
    Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
    Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
    ESPLOSIONEMATTONCINO(MATTONCINO-1)=1
    MATTONCINO(MATTONCINO-1)=0
    Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
   End If 
   Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
   Y1MATTONCINO=Y0MATTONCINO+9
   If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
    If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
     DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
    Else 
     DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
    End If 
    If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 40
     End If 
    Else 
     If EFFETTISONORICARICATI=2
      If MATTONCINOELIMINATODALLAPALLINA=VERO
       Sam Play VOCE,19
      Else 
       Sam Play VOCE,3
      End If 
      Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Boom 
     End If 
    End If 
   Else 
    If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,3 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 60
     End If 
    Else 
     If EFFETTISONORICARICATI=2
      If MATTONCINOELIMINATODALLAPALLINA=VERO
       Sam Play VOCE,19
      Else 
       Sam Play VOCE,6
      End If 
      Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 50
     End If 
    End If 
   End If 
  End If 
 End If 
End Proc
Procedure MATTONCINOCOLPITODALRAGGIOLASER
 'check if a brick has been hitted by the laser ray 
 If RAGGIOLASERSPARATO=VERO
  MATTONCINO=Zone(XLASER,YLASER)
  If MATTONCINO>0
   MATTONELLA=MATTONCINO(MATTONCINO-1)
   If MATTONELLA>0
    If MATTONELLA<10
     MATTONCINOELIMINATODALRAGGIOLASER=VERO
    Else If MATTONELLA>9 and MATTONELLA<28
     Proc CANCELLAILRAGGIOLASER
     Add MATTONELLA,-9
     MATTONCINO(MATTONCINO-1)=MATTONELLA
     Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
    Else 
     If MATTONELLA=28
      MATTONCINOELIMINATODALRAGGIOLASER=VERO
     Else If MATTONELLA=29 and LASER>1
      MATTONCINOELIMINATODALRAGGIOLASER=VERO
     Else If MATTONELLA=30 and LASER=3
      MATTONCINOELIMINATODALRAGGIOLASER=VERO
     Else If MATTONELLA=31
      RAGGIOLASERRIFLESSO=VERO
      QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
      MATTONCINOELIMINATODALRAGGIOLASER=VERO
     Else If MATTONELLA=32 and LASER>1
      RAGGIOLASERRIFLESSO=VERO
      QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
      MATTONCINOELIMINATODALRAGGIOLASER=VERO
     Else If MATTONELLA=33 and LASER=3
      RAGGIOLASERRIFLESSO=VERO
      QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO
      MATTONCINOELIMINATODALRAGGIOLASER=VERO
     End If 
    End If 
    If MATTONCINOELIMINATODALRAGGIOLASER=VERO
     If RAGGIOLASERRIFLESSO=FALSO or QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=FALSO
      Proc CANCELLAILRAGGIOLASER
     End If 
     ESPLOSIONEMATTONCINO(MATTONCINO-1)=1
     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
     MATTONCINO(MATTONCINO-1)=0
     Proc RIDISEGNODELMATTONCINO[MATTONCINO,500]
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,19 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Boom 
     End If 
    End If 
   End If 
  End If 
 End If 
End Proc
Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
 'check if the bar has met the specified bonus brick  
 If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
   MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
   Add PUNTEGGIO,20
  Else 
   Add PUNTEGGIO,10
  End If 
  Proc MOSTRAILPUNTEGGIO[VERO]
  Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  Repeat 
   If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem a(dd a )b(all in the game field) 
    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
     If PALLINA(PALLINA)=FALSO
      PALLINA(PALLINA)=VERO
      XPALLINA#(PALLINA)=XBARRA
      YPALLINA#(PALLINA)=YBARRA-4
      VELOCITADELLAPALLINA#(PALLINA)=1
      D1REZIONEXPALLINA=Rnd(1)
      If D1REZIONEXPALLINA=1
       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
      Else 
       DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
      End If 
      DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
      Inc PALLINEINCAMPO
      Exit 
     End If 
    Next 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+  
    If _BARRE<1000
     Inc _BARRE : Proc MOSTRALEBARRERIMASTE
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-    
    If _BARRE>0
     Dec _BARRE : Proc MOSTRALEBARRERIMASTE
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem b(all)?
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=2
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=3
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)+ 
    If LUNGHEZZADELLABARRA<2
     Inc LUNGHEZZADELLABARRACAMBIATA
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem B(ar)- 
    If LUNGHEZZADELLABARRA>0
     Dec LUNGHEZZADELLABARRACAMBIATA
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem B(ar)? 
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=5
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=6
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem D(uck) 
    _PAPEROINCAMPO= Not _PAPEROINCAMPO
    If _PAPEROINCAMPO=VERO
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,16 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 30
     End If 
    Else 
     Proc CANCELLAILPAPERO
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,17 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 10
     End If 
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem G(lue) 
    C0LLA= Not C0LLA
    If C0LLA=VERO
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,16 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 30
     End If 
    Else 
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,17 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 10
     End If 
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem L(aser)+ 
    If LASER=-1
     LASER=1
    Else If LASER=1
     LASER=2
    Else If LASER=2
     LASER=3
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem L(aser)- 
    If LASER>0
     Dec LASER
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem L(aser)? 
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=10
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=11
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem N(ext level) 
    MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem P(oints)+  
    If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
     If PUNTEGGIO<9999800
      Add PUNTEGGIO,180
     End If 
    Else 
     If PUNTEGGIO<9999900
      Add PUNTEGGIO,90
     End If 
    End If 
    Proc MOSTRAILPUNTEGGIO[VERO]
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem P(oints)-  
    If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
     Add PUNTEGGIO,-220
    Else 
     Add PUNTEGGIO,-110
    End If 
    If PUNTEGGIO<0
     PUNTEGGIO=0
    End If 
    Proc MOSTRAILPUNTEGGIO[VERO]
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem P(oints)?
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=14
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=15
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem R(ow)+ 
    If RIGA<3
     T0GLILARIGA=RIGA : Inc RIGA
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem R(ow)- 
    If RIGA>0
     T0GLILARIGA=RIGA : RIGA=0
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem R(ow)? 
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=17
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=18
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=20 : Rem S(peed)+ 
    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
     If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
      VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
      If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
       DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
      Else 
       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
       DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
      End If 
     End If 
    Next PALLINA
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=21 : Rem S(peed)- 
    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
     If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
      VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
      If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
       DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
      Else 
       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
       DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
      End If 
     End If 
    Next PALLINA
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=22 : Rem S(peed)? 
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=20
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=21
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=23 : Rem (bar) V(elocity)+
    If RITARDOMASSIMODELLABARRA>0
     Add RITARDOMASSIMODELLABARRA,-2
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=24 : Rem (bar) V(elocity)-
    If RITARDOMASSIMODELLABARRA<50
     Add RITARDOMASSIMODELLABARRA,2
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=25 : Rem (bar) V(elocity)?
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=23
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=24
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=26 : Rem X(treme) 
    RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
    If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,16 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 30
     End If 
    Else 
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,17 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 10
     End If 
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=27 : Rem y+ 
    If YBARRA<247
     Add YBARRA,5
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=28 : Rem y- 
    If YBARRA>197
     Add YBARRA,-5
    End If 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
    TIPODIMATTONCINODIPOTENZIAMENTO=0
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=29 : Rem b(all)?
    If Rnd(1)=1
     TIPODIMATTONCINODIPOTENZIAMENTO=27
    Else 
     TIPODIMATTONCINODIPOTENZIAMENTO=28
    End If 
   Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
    TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
   End If 
  Until TIPODIMATTONCINODIPOTENZIAMENTO=0
 End If 
End Proc
Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
 'check if the specified bonus brick has gone out of the game field 
 If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
  Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
 End If 
End Proc
Procedure METTIILPANNELLO
 'put the panel in the game field 
 XPANNELLO=Screen Width-LARGHEZZAPANNELLO
 Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
End Proc
Procedure METTIECONTAIMATTONCINI
 'put the bricks in the game field and count them 
 MATTONCINI=0
 For MATTONCINO=0 To 246
  If MATTONCINO(MATTONCINO)>0
   Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
   Inc MATTONCINI
  Else 
   Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  End If 
 Next MATTONCINO
End Proc
Procedure METTIILGIOCOINPAUSA
 'pause the game
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1]
 MESSAGGIO$="The game is paused."+ACAPO$
 MESSAGGIO$=MESSAGGIO$+"Press a (mouse) key to continue..."
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0]
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
End Proc
Procedure MOLLAILGUANO
 'drop the guano  
 If GUANOINCAMPO=VERO
  If GUANOMOLLATO=FALSO
   XGUANO=XPAPEROALIENO : YGUANO=YPAPEROALIENO+35 : GUANOMOLLATO=VERO
  Else 
   Bob OGGETTOGUANO,XGUANO,YGUANO,IMMAGINEGUANO
   Proc LABARRAESTATACOLPITADALGUANO
   Proc ILGUANOEUSCITODALCAMPODIGIOCO
   Add YGUANO,3
  End If 
 End If 
End Proc
Procedure MOSTRAICREDITI
 'show the credits  
 CREDITI$="EsseEmmeErre Sofware Solutions"+ACAPO$
 CREDITI$=CREDITI$+"presents..."+ACAPO$
 CREDITI$=CREDITI$+"************"+ACAPO$
 CREDITI$=CREDITI$+"* MATTONITE *"+ACAPO$
 CREDITI$=CREDITI$+"************"+ACAPO$
 CREDITI$=CREDITI$+"by Stefano Maria Regattin"+ACAPO$
 CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+ACAPO$
 CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+ACAPO$
 CREDITI$=CREDITI$+"http://xoomer.virgilio.it/aregat/"+ACAPO$
 CREDITI$=CREDITI$+"mattonite@esseemmeerre.mailshell.com"+ACAPO$
 CREDITI$=CREDITI$+"ICQ#: 113412377"+ACAPO$
 CREDITI$=CREDITI$+"This game, its editor and the related source"+ACAPO$
 CREDITI$=CREDITI$+"codes are freely shared out."+ACAPO$
 CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+ACAPO$
 CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+ACAPO$
 CREDITI$=CREDITI$+"The source codes don't require any additional"+ACAPO$
 CREDITI$=CREDITI$+"extension."+ACAPO$
 CREDITI$=CREDITI$+"If you will create a new game starting from these"+ACAPO$
 CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+ACAPO$
 CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+ACAPO$
 CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+ACAPO$
 CREDITI$=CREDITI$+"if she would liked I created a game for her,"+ACAPO$
 CREDITI$=CREDITI$+"assuring her I was able to create almost any"+ACAPO$
 CREDITI$=CREDITI$+"kind of game she wanted."+ACAPO$
 CREDITI$=CREDITI$+"The answer was yes and she specified a game"+ACAPO$
 CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+ACAPO$
 CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+ACAPO$
 CREDITI$=CREDITI$+"gaining points for the hits."+ACAPO$
 CREDITI$=CREDITI$+"So I started the development of this game and"+ACAPO$
 CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+ACAPO$
 CREDITI$=CREDITI$+"brickache."+ACAPO$
 CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+ACAPO$
 CREDITI$=CREDITI$+"the bricks by the ball hits to overcome all"+ACAPO$
 CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+ACAPO$
 CREDITI$=CREDITI$+"playability."+ACAPO$
 CREDITI$=CREDITI$+"The duck eats all the bricks, but avoid the alien"+ACAPO$
 CREDITI$=CREDITI$+"duck's guano!"+ACAPO$
 CREDITI$=CREDITI$+"Avoid the reflected laser ray also!"+ACAPO$
 CREDITI$=CREDITI$+"Don't hit the mortal boing with the bar!"+ACAPO$
 CREDITI$=CREDITI$+"You must hit this by a ball or by the laser ray."+ACAPO$
 CREDITI$=CREDITI$+"The three flashing cyan digits report the bars"+ACAPO$
 CREDITI$=CREDITI$+"left."+ACAPO$
 CREDITI$=CREDITI$+"The three flashing orange digits report the"+ACAPO$
 CREDITI$=CREDITI$+"current level."+ACAPO$
 CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+ACAPO$
 CREDITI$=CREDITI$+"the score position relative to the top hundred"+ACAPO$
 CREDITI$=CREDITI$+"scores."+ACAPO$
 CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+ACAPO$
 CREDITI$=CREDITI$+"the score."+ACAPO$
 CREDITI$=CREDITI$+"The seven flashing orange digits column report"+ACAPO$
 CREDITI$=CREDITI$+"the first position score."+ACAPO$
 CREDITI$=CREDITI$+"The seven flashing rainbow colour digits column"+ACAPO$
 CREDITI$=CREDITI$+"report the current level bonus."+ACAPO$
 CREDITI$=CREDITI$+"Press the space bar to shock the balls."+ACAPO$
 CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+ACAPO$
 CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+ACAPO$
 CREDITI$=CREDITI$+"the ballthief!"+ACAPO$
 CREDITI$=CREDITI$+"Press the P key to pause the game."+ACAPO$
 CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+ACAPO$
 CREDITI$=CREDITI$+"or press the Esc key to leave the text."+ACAPO$
 CREDITI$=CREDITI$+"This is the end...Enjoy!"
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
End Proc
Procedure MOSTRAILBONUS[M0DO]
 'show the bonus  
 If M0DO=VERO
  CIFRA=BONUS/1000000 mod 10
  Paste Bob 305,120,73+CIFRA
  CIFRA=BONUS/100000 mod 10
  Paste Bob 305,138,73+CIFRA
  CIFRA=BONUS/10000 mod 10
  Paste Bob 305,156,73+CIFRA
  CIFRA=BONUS/1000 mod 10
  Paste Bob 305,174,73+CIFRA
  CIFRA=BONUS/100 mod 10
  Paste Bob 305,192,73+CIFRA
  CIFRA=BONUS/10 mod 10
  Paste Bob 305,210,73+CIFRA
  CIFRA=BONUS mod 10
  Paste Bob 305,228,73+CIFRA
 Else 
  CIFRA=BONUS mod 10
  Paste Bob 305,228,73+CIFRA
  If CIFRA=9
   CIFRA=BONUS/10 mod 10
   Paste Bob 305,210,73+CIFRA
   If CIFRA=9
    CIFRA=BONUS/100 mod 10
    Paste Bob 305,192,73+CIFRA
    If CIFRA=9
     CIFRA=BONUS/1000 mod 10
     Paste Bob 305,174,73+CIFRA
     If CIFRA=9
      CIFRA=BONUS/10000 mod 10
      Paste Bob 305,156,73+CIFRA
      If CIFRA=9
       CIFRA=BONUS/100000 mod 10
       Paste Bob 305,138,73+CIFRA
       If CIFRA=9
        CIFRA=BONUS/1000000 mod 10
        Paste Bob 305,120,73+CIFRA
       End If 
      End If 
     End If 
    End If 
   End If 
  End If 
 End If 
End Proc
Procedure MOSTRAILLASER
 'show the laser beam over the bar  
 If LASER>0
  Bob OGGETTOLASER,Int(XBARRA),YBARRA,IMMAGINELASER+LASER
 Else If LASER=0
  Proc T0GLIILLASER
  LASER=-1
 End If 
End Proc
Procedure MOSTRAILLIVELLO
 'shov the level  
 CIFRA=LIVELLO/100 mod 10
 Paste Bob 273,29,63+CIFRA
 CIFRA=LIVELLO/10 mod 10
 Paste Bob 289,29,63+CIFRA
 CIFRA=LIVELLO mod 10
 Paste Bob 305,29,63+CIFRA
End Proc
Procedure MOSTRAILPUNTEGGIO[M0DO]
 'show the score  
 If M0DO=VERO
  CIFRA=PUNTEGGIO/1000000 mod 10
  Paste Bob 273,120,53+CIFRA
  CIFRA=PUNTEGGIO/100000 mod 10
  Paste Bob 273,138,53+CIFRA
  CIFRA=PUNTEGGIO/10000 mod 10
  Paste Bob 273,156,53+CIFRA
  CIFRA=PUNTEGGIO/1000 mod 10
  Paste Bob 273,174,53+CIFRA
  CIFRA=PUNTEGGIO/100 mod 10
  Paste Bob 273,192,53+CIFRA
  CIFRA=PUNTEGGIO/10 mod 10
  Paste Bob 273,210,53+CIFRA
  CIFRA=PUNTEGGIO mod 10
  Paste Bob 273,228,53+CIFRA
 Else 
  CIFRA=PUNTEGGIO mod 10
  Paste Bob 273,228,53+CIFRA
  If CIFRA=0
   CIFRA=PUNTEGGIO/10 mod 10
   Paste Bob 273,210,53+CIFRA
   If CIFRA=0
    CIFRA=PUNTEGGIO/100 mod 10
    Paste Bob 273,192,53+CIFRA
    If CIFRA=0
     CIFRA=PUNTEGGIO/1000 mod 10
     Paste Bob 273,174,53+CIFRA
     If CIFRA=0
      CIFRA=PUNTEGGIO/10000 mod 10
      Paste Bob 273,156,53+CIFRA
      If CIFRA=0
       CIFRA=PUNTEGGIO/100000 mod 10
       Paste Bob 273,138,53+CIFRA
       If CIFRA=0
        CIFRA=PUNTEGGIO/1000000 mod 10
        Paste Bob 273,120,53+CIFRA
       End If 
      End If 
     End If 
    End If 
   End If 
  End If 
 End If 
 If MOSTRASOLOILPUNTEGGIOMASSIMO=1 or POSIZIONE=1
  If PUNTEGGIO>PUNTEGGIOMASSIMO
   PUNTEGGIOMASSIMO=PUNTEGGIO
   Proc MOSTRAILPUNTEGGIOMASSIMO[FALSO]
  End If 
 Else 
  PUNTEGGIOSUPERIORE=Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-2))
  If PUNTEGGIO>PUNTEGGIOSUPERIORE
   Proc MOSTRALAPOSIZIONE
   Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  End If 
 End If 
End Proc
Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
 'show the better or the best score 
 If MOSTRASOLOILPUNTEGGIOMASSIMO=1 or POSIZIONE=1
  PUNTEGGIOSUPERIORE=PUNTEGGIOMASSIMO
 Else 
  PUNTEGGIOSUPERIORE=Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-2))
 End If 
 If M0DO=VERO
  CIFRA=PUNTEGGIOSUPERIORE/1000000 mod 10
  Paste Bob 289,120,63+CIFRA
  CIFRA=PUNTEGGIOSUPERIORE/100000 mod 10
  Paste Bob 289,138,63+CIFRA
  CIFRA=PUNTEGGIOSUPERIORE/10000 mod 10
  Paste Bob 289,156,63+CIFRA
  CIFRA=PUNTEGGIOSUPERIORE/1000 mod 10
  Paste Bob 289,174,63+CIFRA
  CIFRA=PUNTEGGIOSUPERIORE/100 mod 10
  Paste Bob 289,192,63+CIFRA
  CIFRA=PUNTEGGIOSUPERIORE/10 mod 10
  Paste Bob 289,210,63+CIFRA
  CIFRA=PUNTEGGIOSUPERIORE mod 10
  Paste Bob 289,228,63+CIFRA
 Else 
  CIFRA=PUNTEGGIOSUPERIORE mod 10
  Paste Bob 289,228,63+CIFRA
  If CIFRA=0
   CIFRA=PUNTEGGIOSUPERIORE/10 mod 10
   Paste Bob 289,210,63+CIFRA
   If CIFRA=0
    CIFRA=PUNTEGGIOSUPERIORE/100 mod 10
    Paste Bob 289,192,63+CIFRA
    If CIFRA=0
     CIFRA=PUNTEGGIOSUPERIORE/1000 mod 10
     Paste Bob 289,174,63+CIFRA
     If CIFRA=0
      CIFRA=PUNTEGGIOSUPERIORE/10000 mod 10
      Paste Bob 289,156,63+CIFRA
      If CIFRA=0
       CIFRA=PUNTEGGIOSUPERIORE/100000 mod 10
       Paste Bob 289,138,63+CIFRA
       If CIFRA=0
        CIFRA=PUNTEGGIOSUPERIORE/1000000 mod 10
        Paste Bob 289,120,63+CIFRA
       End If 
      End If 
     End If 
    End If 
   End If 
  End If 
 End If 
End Proc
Procedure MOSTRAILRAGGIOLASER
 'show the laser ray  
 If RAGGIOLASERSPARATO=VERO
  Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
  If RAGGIOLASERRIFLESSO=VERO
   If YLASER<255
    Add YLASER,5
   Else 
    RAGGIOLASERRIFLESSO=FALSO
    Proc CANCELLAILRAGGIOLASER
   End If 
  Else 
   If YLASER>0
    Add YLASER,-5
   Else 
    Proc CANCELLAILRAGGIOLASER
   End If 
  End If 
  Bob Update 
 End If 
End Proc
Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
 'show the top hundred player scores  
 If Exist(PUNTEGGI$) and CENTOGIOCATORI$<>""
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
 Else 
  NONCISONOGIOCATORI$="No players till now..."+ACAPO$
  NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
 End If 
End Proc
Procedure MOSTRAILTEMPOTRASCORSODIGIOCOESALUTAILGIOCATORE
 'show the game time and greets the player  
 MESSAGGIOFINALE$="The game is finished."+ACAPO$
 If TEMP0TRASCORSODIGIOCO>0
  GIORNI=TEMP0TRASCORSODIGIOCO/4320000 : GIORNI$=Str$(GIORNI)
  _ORE=TEMP0TRASCORSODIGIOCO/180000 mod 24 : _ORE$=Str$(_ORE)
  M1NUTI=TEMP0TRASCORSODIGIOCO/3000 mod 60 : M1NUTI$=Str$(M1NUTI)
  SECONDI=TEMP0TRASCORSODIGIOCO/50 mod 60 : SECONDI$=Str$(SECONDI)
  MESSAGGIOFINALE$=MESSAGGIOFINALE$+"You have played for"
  If GIORNI=1
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+GIORNI$+" day,"
  Else 
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+GIORNI$+" days,"
  End If 
  If _ORE=1
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+_ORE$+" hour,"
  Else 
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+_ORE$+" hours,"
  End If 
  MESSAGGIOFINALE$=MESSAGGIOFINALE$+ACAPO$
  If M1NUTI=1
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+M1NUTI$+" minute and"
  Else 
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+M1NUTI$+" minutes and"
  End If 
  If SECONDI=1
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+SECONDI$+" second."
  Else 
   MESSAGGIOFINALE$=MESSAGGIOFINALE$+SECONDI$+" seconds."
  End If 
  MESSAGGIOFINALE$=MESSAGGIOFINALE$+ACAPO$
 End If 
 MESSAGGIOFINALE$=MESSAGGIOFINALE$+"I hope you have enjoyed."+ACAPO$
 MESSAGGIOFINALE$=MESSAGGIOFINALE$+"Bye bye!"
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIOFINALE$,20,22,1,1000]
End Proc
Procedure MOSTRALABARRA
 'show the bar  
 If LUNGHEZZADELLABARRA=0
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,5
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,6
 Else If LUNGHEZZADELLABARRA=1
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,1
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,2
 Else If LUNGHEZZADELLABARRA=2
  Bob OGGETTOCENTRODELLABARRA,Int(XBARRA),YBARRA,3
  Bob OGGETTOLATIDELLABARRA,Int(XBARRA),YBARRA,4
 End If 
End Proc
Procedure MOSTRALAPOSIZIONE
 'show the current player position  
 For POSIZIONE=1 To 100
  If PUNTEGGIO>Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-1))
   Exit 
  Else If PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=""
   Exit 
  End If 
 Next POSIZIONE
 CIFRA=POSIZIONE/100 mod 10
 Paste Bob 273,47,73+CIFRA
 CIFRA=POSIZIONE/10 mod 10
 Paste Bob 289,47,73+CIFRA
 CIFRA=POSIZIONE mod 10
 Paste Bob 305,47,73+CIFRA
End Proc
Procedure MOSTRALARIGA[TIPODIRIGA]
 'show the row  
 If TIPODIRIGA=1
  IMMAGINERIGA=IMMAGINERIGAUNO
 Else If TIPODIRIGA=2
  IMMAGINERIGA=IMMAGINERIGADUE
 Else If TIPODIRIGA=3
  IMMAGINERIGA=IMMAGINERIGATRE
 End If 
 If XRIGA>0
  Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
 Else 
  If T0GLILARIGA>0
   Proc T0GLILARIGA
   T0GLILARIGA=0
   DURATADELLARIGA=-1
  End If 
 End If 
 Bob Update 
End Proc
Procedure MOSTRALEOPZIONIDIGIOCO
 'show the game options 
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 0,TextHeight 2+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 1,'Bonus bricks Coloured' TextWidth 10+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 2,0VAriable 5+ 4* 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BAse ScreenWidth 1VAriable- 2/,ScreenHeight 2VAriable- 2/;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SIze 1VAriable,2VAriable;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 38,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,1VAriable 1-,2VAriable 1-;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,2VAriable 2-,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,1VAriable 2-,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 1VAriable 1-,1,1VAriable 1-,2VAriable 1-;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 1VAriable 1-,2VAriable 1-,1,2VAriable 1-;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 3,'Highest' TextWidth 1- 2+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 4,'Coloured' TextWidth 1- 2+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 5,'Disabled' TextWidth 1- 2+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"SetVariable 6,'Disabled' TextWidth 1- 2+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,3,'Top score',21 32+,21;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,3 0VAriable+ 5+,'Bonus bricks',20 32+,20;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,0VAriable 5+ 2* 3+,'Video sync',21 32+,21;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"PrintOutline 3,0VAriable 5+ 3* 3+,'Music',20 32+,20;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 1,1VAriable 3VAriable- 1- 5-,2,3VAriable 4+,0VAriable 4+,7VAriable,0,1;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,3VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Higher',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Highest',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,3VAriable 3+,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 3VAriable 3+,1,3VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 3VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 2,1VAriable 4VAriable- 5- 1-,0VAriable 1- 5+ 3+,4VAriable 1- 4+,0VAriable 4+,8VAriable,0,1;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,4VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Standard',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Coloured',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,4VAriable 3+,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 4VAriable 3+,1,4VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 4VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 3,1VAriable 5VAriable- 5- 1-,0VAriable 5+ 2* 1- 3+,5VAriable 4+,0VAriable 4+,9VAriable,0,1;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,5VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Disabled',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Enabled',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,5VAriable 3+,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 5VAriable 3+,1,5VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 5VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"BUtton 4,1VAriable 6VAriable- 5- 1-,0VAriable 5+ 3* 1- 3+,6VAriable 4+,0VAriable 4+,10VAriable,0,1;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[INk 38,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicBox 0,0,5VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 0=;[SetWriting 1;PrintOutline 3,3,'Disabled',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"IF ButtonPosition 1=;[SetWriting 1;PrintOutline 3,3,'Enabled',7,6;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 37,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0VAriable 3+,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 0,0,5VAriable 3+,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"INk 39,0,0;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 6VAriable 3+,1,5VAriable 3+,0VAriable 3+;"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"GraphicLine 6VAriable 3+,0VAriable 3+,1,0VAriable 3+;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"[ButtonChange 4,10VAriable;]"
 _INTERFACCIAPERLEOPZIONI$=_INTERFACCIAPERLEOPZIONI$+"EXit;"
 MESSAGGIOPERLEOPZIONI$="Normally the seven flashing orange digits"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"column reports the highest score but, in"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"the following requester, you can enable"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"it showing the lowerst of the top hundred"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"scores that is higher than your score!"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"In the requester there is also an option"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"to enable the video sync for a playable"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"game on a very fast Amiga!"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"You can choose also to have coloured or"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"standard bonus bricks into the game."+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Now you can have a background motive."+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Press a (mouse) key for the requester"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"and enable or disable the options as"+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"you wish..."+ACAPO$
 MESSAGGIOPERLEOPZIONI$=MESSAGGIOPERLEOPZIONI$+"Press the Esc key to leave these options..."
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIOPERLEOPZIONI$,20,20,1,1000]
 Show : Autoback 1 : Screen Copy Physic To Logic
 Dialog Open 1,_INTERFACCIAPERLEOPZIONI$
 Vdialog(1,3)=FONTEDICARATTERI
 Vdialog(1,7)=MOSTRASOLOILPUNTEGGIOMASSIMO
 Vdialog(1,8)=MATTONCINIDIPOTENZIAMENTOCOLORATI
 Vdialog(1,9)=RITARDODELGIOCO
 Vdialog(1,10)=MOTIVODIFONDOCARICATO
 _INTERFACCIAPERLEOPZIONI=Dialog Run(1)
 DURATADELLINTERFACCIAPERLEOPZIONI=120
 Repeat 
  Screen Swap : Screen Copy Physic To Logic
  PRECEDENTEMOSTRASOLOILPUNTEGGIOMASSIMO=MOSTRASOLOILPUNTEGGIOMASSIMO
  MOSTRASOLOILPUNTEGGIOMASSIMO=Rdialog(1,1)
  If MOSTRASOLOILPUNTEGGIOMASSIMO<>PRECEDENTEMOSTRASOLOILPUNTEGGIOMASSIMO
   If MOSTRASOLOILPUNTEGGIOMASSIMO=1
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
   Else 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
   End If 
   Screen Swap : Screen Copy Physic To Logic
  End If 
  PRECEDENTEMATTONCINIDIPOTENZIAMENTOCOLORATI=MATTONCINIDIPOTENZIAMENTOCOLORATI
  MATTONCINIDIPOTENZIAMENTOCOLORATI=Rdialog(1,2)
  If MATTONCINIDIPOTENZIAMENTOCOLORATI<>PRECEDENTEMATTONCINIDIPOTENZIAMENTOCOLORATI
   If MATTONCINIDIPOTENZIAMENTOCOLORATI=1
    OGGETTI$=OGGETTICOLORATI$
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
   Else 
    OGGETTI$=OGGETTISTANDARD$
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
   End If 
   Screen Swap : Screen Copy Physic To Logic
   Proc CARICAGLIOGGETTI
   Proc CREALEIMMAGINIPERLERIGHE
   If M0DULOMEDCARICATO=True
    Proc SUONAILMODULOMED
   End If 
  End If 
  PRECEDENTERITARDODELGIOCO=RITARDODELGIOCO
  RITARDODELGIOCO=Rdialog(1,3)
  If RITARDODELGIOCO<>PRECEDENTERITARDODELGIOCO
   If RITARDODELGIOCO=1
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,16 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 30
    End If 
   Else 
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,17 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 10
    End If 
   End If 
   Screen Swap : Screen Copy Physic To Logic
  End If 
  If M0DULOMEDCARICATO=False
   PRECEDENTEMOTIVODIFONDOCARICATO=MOTIVODIFONDOCARICATO
   MOTIVODIFONDOCARICATO=Rdialog(1,4)
   If MOTIVODIFONDOCARICATO<>PRECEDENTEMOTIVODIFONDOCARICATO
    If MOTIVODIFONDOCARICATO=1
     Proc CARICAILMOTIVODIFONDO
     If MOTIVODIFONDOCARICATO=1
      Proc CARICARAWOIFF
      Erase BANCOTEMPORANEO
'      Every On  
'      Every 900 Proc SUONAILMOTIVODIFONDO 
     End If 
    End If 
    If MOTIVODIFONDOCARICATO=1
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,16 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 30
     End If 
    Else 
     If EFFETTISONORICARICATI=2
      Sam Play VOCE,17 : Proc VOCESEGUENTE
     Else If EFFETTISONORICARICATI=1
      Bell 10
     End If 
'     Every Off  
     Erase BANCOMOTIVODIFONDO
     Erase BANCOTEMPORANEO
    End If 
    Vdialog(1,10)=MOTIVODIFONDOCARICATO
    Screen Swap : Screen Copy Physic To Logic
   End If 
  End If 
  _ASPETTA[25]
  If DURATADELLINTERFACCIAPERLEOPZIONI>0
   Dec DURATADELLINTERFACCIAPERLEOPZIONI
  Else 
   TASTO=27
  End If 
 Until TASTO=27
 Dialog Close 1
 Hide 
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
 Autoback 0
End Proc
Procedure MOSTRALEBARRERIMASTE
 'show the remained balls 
 _BARRERIMASTE=_BARRE-1
 If _BARRERIMASTE>-1
  CIFRA=_BARRERIMASTE/100 mod 10
  Paste Bob 273,11,53+CIFRA
  CIFRA=_BARRERIMASTE/10 mod 10
  Paste Bob 289,11,53+CIFRA
  CIFRA=_BARRERIMASTE mod 10
  Paste Bob 305,11,53+CIFRA
 End If 
End Proc
Procedure NEMICIINCAMPO
 'manage the enemies
 If COMPORTAMENTODEINEMICI=0
  If NEMICOUNO(0)=0
   XDIPARTENZANEMICOUNO(0)=Rnd(1)
   If XDIPARTENZANEMICOUNO(0)=0
    XNEMICOUNO(0)=-11
    ROTAZIONENEMICOUNO(0)=-1
   Else If XDIPARTENZANEMICOUNO(0)=1
    XNEMICOUNO(0)=Screen Width-LARGHEZZAPANNELLO+11
    ROTAZIONENEMICOUNO(0)=1
   End If 
   YNEMICOUNO(0)=Rnd(17*11)+11
   LIMITI[YNEMICOUNO(0),11,18*11-1] : YNEMICOUNO(0)=Param
   NEMICOUNO(0)=Rnd(35)+1
  Else 
   If RITARDODEINEMICIUNO=0
    Add NEMICOUNO(0),ROTAZIONENEMICOUNO(0),1 To IMMAGININEMICOUNO
    If XDIPARTENZANEMICOUNO(0)=0
     Inc XNEMICOUNO(0)
    Else If XDIPARTENZANEMICOUNO(0)=1
     Dec XNEMICOUNO(0)
    End If 
    Bob OGGETTONEMICOUNO,XNEMICOUNO(0),YNEMICOUNO(0),IMMAGINENEMICOUNO(NEMICOUNO(0)-1)
    Proc ILNEMICOUNOESTATOCOLPITO[0]
    Proc ILNEMICOUNOEUSCITODALCAMPODIGIOCO[0]
   End If 
   Add RITARDODEINEMICIUNO,1,0 To 4
  End If 
 End If 
End Proc
Procedure _PAPEROALIENOINCAMPO
 'manage the alien duck 
 If _PAPEROALIENO=0
  XPAPEROALIENO=Rnd(XFINALERIGA) : YPAPEROALIENO=-20
  GRADIPAPEROALIENO=45 : _PAPEROALIENO=1
 Else 
  If RITARDOPAPERO=0
   Add IMMAGINEPAPEROALIENO,1,0 To IMMAGINIPAPERO-1
   Inc YPAPEROALIENO
  End If 
  If _PAPEROINCAMPO=FALSO
   Add RITARDOPAPERO,1,0 To 12
  End If 
  Add GRADIPAPEROALIENO,_PAPEROALIENO
  If GRADIPAPEROALIENO=90
   GUANOINCAMPO=VERO
  Else If _PAPEROALIENO=1 and GRADIPAPEROALIENO=135
   _PAPEROALIENO=-1
  Else If _PAPEROALIENO=-1 and GRADIPAPEROALIENO=45
   _PAPEROALIENO=1
  End If 
  XMOVIMENTOPAPEROALIENO=Cos(GRADIPAPEROALIENO)*80
  YMOVIMENTOPAPEROALIENO=Sin(GRADIPAPEROALIENO)*80-50
  Bob OGGETTOPAPEROALIENO,XPAPEROALIENO+XMOVIMENTOPAPEROALIENO,YPAPEROALIENO+YMOVIMENTOPAPEROALIENO,IMMAGINEPAPEROALIENO(IMMAGINEPAPEROALIENO)
  Proc ILPAPEROALIENOESTATOCOLPITO
  Proc ILPAPEROALIENOEUSCITODALCAMPODIGIOCO
 End If 
End Proc
Procedure _PAPEROINCAMPO
 'manage the duck 
 Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
 If RITARDOPAPERO=0
  Add IMMAGINEPAPERO,1,0 To IMMAGINIPAPERO-1
 End If 
 Add RITARDOPAPERO,1,0 To 12
 If MATTONCINODATROVAREPERILPAPERO<247
  If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0
   XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO
   YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO
   If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
    DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
    MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO
   End If 
  End If 
  Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247
 Else 
  If MATTONCINO(MATTONCINOPERILPAPERO)>0
   XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
    Inc XPAPERO
   Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
    Dec XPAPERO
   End If 
   YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
   If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
    Inc YPAPERO
   Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
    Dec YPAPERO
   End If 
   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
    Proc CANCELLAILPAPERO
    X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
    Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
    X1MATTONCINO=X0MATTONCINO+19
    Y1MATTONCINO=Y0MATTONCINO+9
    Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
    ESPLOSIONEMATTONCINO(MATTONCINOPERILPAPERO)=1
    Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO+1,Rnd(9)]
    MATTONCINO(MATTONCINOPERILPAPERO)=0
    Proc RIDISEGNODELMATTONCINO[MATTONCINOPERILPAPERO+1,1000]
   End If 
  Else 
   MATTONCINODATROVAREPERILPAPERO=0
   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  End If 
 End If 
End Proc
Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
 'redraw the hitted bricks  
 For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
   DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
   MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
   DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
   Pop Proc
  End If 
 Next MATTONCINODARIDISEGNARE
End Proc
Procedure RIMETTILOSFONDO
 'redraw the screen 
 Put Block 1
End Proc
Procedure RUBAPALLINAINCAMPO
 'manage the ballthief
 If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1)
  If PALLINA(PALLINA)=VERO
   PALLINASCELTADALRUBAPALLINA=PALLINA
   YRUBAPALLINA=0
   If EFFETTISONORICARICATI=2
    Sam Play VOCE,13 : Proc VOCESEGUENTE
   Else If EFFETTISONORICARICATI=1
    Bell 4
   End If 
  End If 
 Else 
  Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA)
  If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
   If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO
    XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA))
    YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA))
    XRUBAPALLINA=XPALLINA
    If YRUBAPALLINA>YPALLINA
     Dec YRUBAPALLINA
    Else If YRUBAPALLINA<YPALLINA
     Inc YRUBAPALLINA
    Else 
     PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA
     PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO
    End If 
   Else 
    PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
    PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
   End If 
  Else 
   Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA
   Add XRUBAPALLINA,Rnd(6)-3
   Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param
   Dec YRUBAPALLINA
   If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0
    If EFFETTISONORICARICATI=2
     Sam Play VOCE,14 : Proc VOCESEGUENTE
    Else If EFFETTISONORICARICATI=1
     Bell 4
    End If 
   End If 
   Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 49
   Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  End If 
  Proc ILRUBAPALLINAESTATOCOLPITO
 End If 
End Proc
Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
 'save the top hundred scores 
 If Exist(PUNTEGGI$) Then Kill PUNTEGGI$
 Open Out 1,PUNTEGGI$
 For POSIZIONI=0 To 99
  If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))>0
   Print #1,NOMEDELGIOCATORE$(POSIZIONI)
   Print #1,PUNTEGGIODELGIOCATORE$(POSIZIONI)
   Print #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI)
  End If 
 Next POSIZIONI
 Close 1
End Proc
Procedure SUONAILMODULOMED
 Med Play 
End Proc
Procedure SUONAILMOTIVODIFONDO
 'play the background motive
 Sam Raw 8,Start(BANCODELMOTIVODIFONDO),Length(BANCODELMOTIVODIFONDO),8363
End Proc
Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
 'manage the texts  
 If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
 ALTEZZALINEA=ALTEZZAFONT+3
 LINEE=1
 POSIZIONEPAROLA=1
 Repeat 
  ACAPO=Instr(TESTO$,ACAPO$,POSIZIONEPAROLA)
  If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
 Until ACAPO=0
 If LINEE=1
  C0LORETESTO=C0LORETESTOPRIMALINEA
  XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
  YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
  Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  Screen Swap : Proc RIMETTILOSFONDO
  Proc _ASPETTA[TEMP0]
  If TASTO=27
   Pop Proc
  End If 
 Else 
  Dim TESTO$(LINEE-1)
  POSIZIONEPAROLA=1
  For LINEA=0 To LINEE-1
   ACAPO=Instr(TESTO$,ACAPO$,POSIZIONEPAROLA)
   If ACAPO>0
    TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
    POSIZIONEPAROLA=ACAPO+1
   Else 
    TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
   End If 
  Next LINEA
  ALTEZZATESTO=ALTEZZALINEA*LINEE
  If ALTEZZATESTO<Screen Height
   ILTESTOSTATUTTONELLOSCHERMO=VERO
  Else 
   For LINEA=LINEE To 2 Step -1
    ALTEZZATESTO=ALTEZZALINEA*LINEA
    If ALTEZZATESTO<Screen Height
     NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
     Exit 
    End If 
   Next LINEA
  End If 
  If ILTESTOSTATUTTONELLOSCHERMO=VERO
   YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
   For LINEA=0 To LINEE-1
    If LINEA mod 2=0
     C0LORETESTO=C0LORETESTOPRIMALINEA
    Else 
     C0LORETESTO=C0LORETESTOSECONDALINEA
    End If 
    XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
    Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
   Next LINEA
   Screen Swap : Proc RIMETTILOSFONDO
   Proc _ASPETTA[TEMP0]
   If TASTO=27
    Pop Proc
   End If 
  Else 
   YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
   For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
    If(LINEA) mod 2=0
     C0LORETESTO=C0LORETESTOPRIMALINEA
    Else 
     C0LORETESTO=C0LORETESTOSECONDALINEA
    End If 
    XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
    Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
   Next LINEA
   Screen Swap : Proc RIMETTILOSFONDO
   Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
   If TASTO=27
    Pop Proc
   End If 
   For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
    For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
     If(LINEA+LINEANELLOSCHERMO) mod 2=0
      C0LORETESTO=C0LORETESTOPRIMALINEA
     Else 
      C0LORETESTO=C0LORETESTOSECONDALINEA
     End If 
     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
    Next LINEANELLOSCHERMO
    Screen Swap : Proc RIMETTILOSFONDO
    Proc _ASPETTA[TEMP0]
    If TASTO=27
     Pop Proc
    End If 
   Next LINEA
  End If 
 End If 
End Proc
Procedure T0GLILARCOBALENO
 'fade out the rainbow  
 For LINEADELLARCOBALENO=271 To 271-255 Step -1
  Rainbow 0,257,0,LINEADELLARCOBALENO
  Wait Vbl 
 Next LINEADELLARCOBALENO
End Proc
Procedure T0GLILARIGA
 'turn off the row  
 Bob Off OGGETTORIGA
 Bob Update 
End Proc
Procedure T0GLIILLASER
 'turn off the laser beam 
 Bob Off OGGETTOLASER
 Bob Update 
End Proc
Procedure T0GLIILPANNELLO
 'fade out the panel  
 Ink 0
 For LINEAPANNELLO=255 To 0 Step -1
  Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
  Wait Vbl 
 Next LINEAPANNELLO
End Proc
Procedure T0GLIIMATTONCINI
 'fade out the bricks 
 Ink 0
 For MATTONCINO=246 To 0 Step -1
  If MATTONCINO(MATTONCINO)>0
   Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
   Wait Vbl 
  End If 
 Next MATTONCINO
End Proc
Procedure TROVAILFONTDATA70
 'look for the Data70 font  
 If Exist("FONTS:")=VERO
  TESTOFONTEDICARATTERI$="I am looking for the Data70 font..."+ACAPO$
  TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"...in your FONTS: drawer."+ACAPO$
  TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Wait for a moment, please..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,17,17,19,-1]
  Get Disc Fonts 
  CISONOFONTIDICARATTERI=FALSO
  For FONTEDICARATTERI=1 To 65536
   FONTEDICARATTERI$=Right$(Left$(Font$(FONTEDICARATTERI),30)-" ",5)
   If FONTEDICARATTERI$=".font"
    CISONOFONTIDICARATTERI=VERO
   End If 
   FONTEDICARATTERI$=Left$(Font$(FONTEDICARATTERI),30)-" "
   If FONTEDICARATTERI$="Data70.font"
    Exit 
   End If 
  Next FONTEDICARATTERI
  If CISONOFONTIDICARATTERI=FALSO
   TESTOFONTEDICARATTERI$="I have found no fonts in your FONTS: drawer :("+ACAPO$
   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
   TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
  Else 
   If FONTEDICARATTERI<65536
    Set Font FONTEDICARATTERI
    ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERI),31,2)-" ")
    TESTOFONTEDICARATTERI$="I have found the Data70 font! :)"+ACAPO$
    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Data70 font!"+ACAPO$
    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,17,17,19,250]
   Else 
    TESTOFONTEDICARATTERI$="I have not found the Data70 font! :("+ACAPO$
    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
    TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
   End If 
  End If 
 Else 
  TESTOFONTEDICARATTERI$="I have not found the FONTS: drawer :("+ACAPO$
  TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"The font I am using is the Topaz font!"+ACAPO$
  TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"This font will be used for the game."+ACAPO$
  TESTOFONTEDICARATTERI$=TESTOFONTEDICARATTERI$+"Press a (mouse) key to continue..."
  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERI$,18,18,19,250]
 End If 
 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1]
End Proc
Procedure VOCESEGUENTE
 'select the next audio voice for the next sound  
 Add VOCE,VOCE
 If MOTIVODIFONDOCARICATO=1
  If VOCE=8 or VOCE=16
   VOCE=1
  End If 
 Else 
  If VOCE=16
   VOCE=1
  End If 
 End If 
End Proc
